当前位置:首页 » 编程语言 » simplexmlphp

simplexmlphp

发布时间: 2023-04-11 04:32:22

php解析报错simplexml_load_string()

你的xml字符串格式不对,标签都没有结束,肯定要报错的。xml里面的标签都必须要有结束标签,但标签也必须使用/>表示蔽仿结束。
改成下面的试试:
$xml_str2 ='<?xml version="1.0" encoding="utf-8"?><response><code>0009</code><msg>号码:18978765456;运营商:联通;地闭缺区:北京 ;产品已停用</msg></轿并辩response>';

❷ php创建SimpleXML对象问题

你的原文本是UTF8,里面XML用GB2312,这样肯定会有冲突,改为UTF8试试看。

❸ PHP中用simpleXML解析XML文档,为什么总出错

你说的“而且单个测试都没问题”只是抽样测试,并不是测试全部。应该有至少一个XML格式是不正确的。如果你加了我的代码,应该会输出这个不正确的XML的内容。你把这个内容贴出来给你看看,没有什么机密吧?如果可以的话,加网络HI。账号:everalan

你加我的代码后,有执行到die($xml)这一行吗?有的话把输出的XML内容发过来帮你分析一下

应该是XML本身的格式就不正确,自然解析失败
try{
$xmld = new SimpleXMLElement($xml);
}catch(Exception $e){
die($xml);
}

这样出错的时候就能知道那个XML是什么内容就知道哪里错了

❹ 如何用php给XML字符串的子节点添加属性

  • xml文件:

    <?xml version="1.0" encoding="UTF-8" ?>

    <clientSet>

    <server url="192.168.0.180" port="1935" />

    <rootPath value="" />

    <homePath value="ht.com" />

    <helpPath value="help.html" />

    <language value="en" />

    <theme value="default" />

    <visibleMarquee value = "true" />

    <visibleWhitePaper value="true" />

    <showMemberRoomForGuest value = "true" />

    <emotions enabled="true" column="5" autoPlay="false">

    <item name="Birthday" src="cartoon/movie/birthday.swf" thumb="cartoon/preview/birthday-small.swf" ration="15"/>

    <item name="Boom" src="cartoon/movie/boom.swf" thumb="cartoon/preview/boom-small.swf" ration="6"/>

    <item name="Bubble" src="cartoon/movie/bubble.swf" thumb="cartoon/preview/bubble-small.swf" ration="7.5"/>

    <item name="Cry" src="cartoon/movie/cry.swf" thumb="cartoon/preview/cry-small.swf" ration="5.4"/>

    <item name="Doggie" src="cartoon/movie/doggie.swf" thumb="cartoon/preview/doggie-small.swf" ration="13"/>

    <item name="Greeting" src="cartoon/movie/greeting.swf" thumb="cartoon/preview/greeting-small.swf" ration="7.4"/>

    <item name="Football" src="cartoon/movie/football.swf" thumb="cartoon/preview/football-small.swf" ration="2.2"/>

    </emotions >

    </clientSet>

  • php代码:

    <?

    $dom=new DOMDocument('1.0');

    $dom->load('x.xml');

    $em=$dom->getElementsByTagName('emotions');

    $em=$em->item(0);

    $items=$em->getElementsByTagName('item');

    foreach($items as $a){

    foreach($a->attributes as $b){

    if($b->nodeValue=='Birthday'){

    $a->setAttribute('name','nBirthday');

    }

    }

    }

    $t=$dom->createElement('item');

    $t->setAttribute('name','x');

    $t->setAttribute('src','www..com');

    $t->setAttribute('ration','ration');

    $em->appendChild($t);

    $dom->save('x.xml');

    ?>

  • PHP解析XML文档属性并编辑:

    <?php

    //读取xml

    $dom=new DOMDocument('1.0');

    $dom->load('data.xml');

    $em=$dom->getElementsByTagName('videos');//最外层节点

    $em=$em->item(0);

    $items=$em->getElementsByTagName('video');//节点

    //如果不用读取直接添加的话把下面这一段去掉即可

    foreach($items as $a){

    foreach($a->attributes as $b){//$b->nodeValue;节点属性的值$b->nodeName;节点属性的名称

    echo $b->nodeName;

    echo ":";

    echo $b->nodeValue;

    echo "<br/>";

    }

    }

    //下面是往xml写入一行新的

    $t=$dom->createElement('video');//<video

    $t->setAttribute('title','1');//<video name="data"

    $t->setAttribute('src','2');//<video name="data" src="2"

    $t->setAttribute('img','1');//<video name="data" img="1"

    $em->appendChild($t);//<video name="data" img="1"/>

    $dom->save('data.xml');

    ?>

    当时的xml文档:

    <?xml version="1.0"?>

    <videos>

    <video img="a" url="1" title="1" nickname="1" tag="1" vid="1" star="1"/>

    <video img="b" url="2" title="2" nickname="2" tag="2" vid="2" star="2"/>

    <video img="c" url="3" title="3" nickname="3" tag="3" vid="3" star="3"/>

    <video title="d" src="2" img="1"/>

    </videos>

  • //下面这一个文件是后改的可以修改xml:

    <?php

    $doc = new DOMDocument();

    $doc->load('data.xml');

    //查找 videos 节点

    $root = $doc->getElementsByTagName('videos');

    //第一个 videos 节点

    $root = $root->item(0);

    //查找 videos 节点下的 video 节点

    $userid = $root->getElementsByTagName('video');

    //遍历所有 video 节点

    foreach ($userid as $rootdata)

    {

    //遍历每一个 video 节点所有属性

    foreach ($rootdata->attributes as $attrib)

    {

    $attribName = $attrib->nodeName; //nodeName为属性名称

    $attribValue = $attrib->nodeValue; //nodeValue为属性内容

    //查找属性名称为ip的节点内容

    if ($attribName =='img')

    {

    //查找属性内容为ip的节点内容

    if ($attribValue =='1')

    {

    //将属性为img,img内容为1的修改为image;

    $rootdata->setAttribute('img','image');

    $doc->save('data.xml');

    }

    }

    }

    }

    ?>

❺ php的simplexml_load_string函数的几个参数解析,求解!谢谢!

$class_name默认脊拦是SimpleXMLElement

是一个对象名,也可以自定义,但是必须是自定义的类必须是SimpleXMLElement的子类,也就是樱碰胡继承!

simplexml_load_string是把结果存于该对象,并把该对象放回

例子:

classa{
public$aa;
}
functionb($c,$d='a'){
$a=new$d();
$a->aa=$c;
return吵丛$a;
}

//使用
$e=b('1234567890',a);
echo$e->aa;

❻ PHP使用DOM和simplexml读取xml文档的方法示例

本文实例讲述了PHP使用DOM和simplexml读取xml文档的方法。分享给大家供大家参考,具体如下:
实例
用DOM获取下列xml文档中所有金庸小说的书名,该xml文档所在位置为
./books.xml:
<?xml
version="1.0"
encoding="utf-8"?>
<root>
<book>
<title>天龙八部</title>
<author>金庸</author>
</book>
<book>
<title>陆小凤</title>
<author>古龙</author>
</book>
<book>
<title>倚天屠龙记</title>
<author>金庸</author>
</book>
<book>
<title>西游记</title>
<author>吴承恩</author>
</book>
<book>
<title>神雕侠侣</title>
<author>金庸</author>
</book>
<book>
<title>射雕英雄传</title>
<author>金庸</author>
</做穗book>
</root>
用DOM代码实现:
DOM读取xml文档步骤:1、创建DOM对象——》2、载入DOM文档内容——》3、截取要读取内容所在的标签——》获得要读取的内容。
header('Content-type:text/html;charset=utf-8');
$arr=array();
$dom
=
new
DOMDocument();//创建DOM对象
$dom->load('./books.xml');//载入xml文档
print_r($dom);
echo
'<hr>';
$dom
=
$dom->getElementsByTagName('book');//截取标签
for($i=0;$i<$dom->length;$i++){
if($dom->item($i)->childNodes->item(1)->childNodes->item(0)->wholeText=='金庸'){
$arr[]
=
$dom->item($i)->childNodes->item(0)->childNodes->item(0)->wholeText.'<br
/>';//获取内容
}
}
print_r($arr);
使用
getElementsByTagName

childNodes
后返回的都是对象,所以它们后面必须使用
item(int),哪怕它们返回的对象里面只包含一个项目,也必须用item(0)来指定,否则就会出错。
用simplexml代码实现:
$simxml
=
simplexml_load_file('./books.xml');
$t
=
$simxml->book;
$arr=array();
foreach
($t
as
$v){
if($v->author=='金庸'){
$arr[]
=
(string)$v->title;
}
}
print_r($arr);
使用
simplexml_load_file
后返回的是对象,该对象里的项目既有对象又有数组,不管是对象还是数组,要循环里面的内容都可以用
foreach。该实例最后获取的内容
$v->title
其实是个对象,所以首胡逗要用
string
转化为字符串。
PS:这里再为大家提供几款关于xml操作的在线工具供大家参考使用:
在线XML/JSON互相转换工具:
http://tools.jb51.net/code/xmljson
在线格式化XML/在线压缩XML:
http://tools.jb51.net/code/xmlformat
XML在线压缩/格式化工具:
http://tools.jb51.net/code/xml_format_compress
XML代码在线格式化美化工具:
http://tools.jb51.net/code/xmlcodeformat
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP针对XML文件操作技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP错误与异常处理方法总结》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序者卖设计有所帮助。

❼ PHP SimpleXML怎么创建cdata

可以蔽虚胡解析,如下:
http://hi..com/yinqinlong502/item/e4dfc900a977ed1acc34eae9
php 解析xml遇到cdata怎么办
用$rss = simplexml_load_file ( '11111.xml', 'SimpleXMLElement', LIBXML_NOCDATA );哎就为了这么个函数宏拦我还去写正则准备替换了,白白废了誉铅我两小时,shit!!!以后多注意下那些函数的可选参数吧。长点教训.
直接输入xml内容为参数的也支持CDATA的解析,如下:
view plainprint?
$rss = simplexml_load_file ( '11111.xml', 'SimpleXMLElement', LIBXML_NOCDATA );
$xmlCode = simplexml_load_string($this->xmlContents, 'SimpleXMLElement', LIBXML_NOCDATA);

热点内容
如何给word文件加密码 发布:2024-11-02 06:21:10 浏览:717
台达模拟量编程 发布:2024-11-02 06:19:41 浏览:410
23456解压 发布:2024-11-02 06:19:40 浏览:183
我的世界服务器个人创造在哪里 发布:2024-11-02 06:10:36 浏览:638
增霸卡的密码是多少 发布:2024-11-02 06:06:18 浏览:813
传奇天下第一完整脚本 发布:2024-11-02 06:04:03 浏览:586
javago性能 发布:2024-11-02 05:51:47 浏览:862
国内ip代理服务器设置方式 发布:2024-11-02 05:42:42 浏览:842
线刷包文件夹 发布:2024-11-02 05:35:35 浏览:626
银行家算法的安全性算法 发布:2024-11-02 05:20:15 浏览:598