當前位置:首頁 » 編程語言 » 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);

熱點內容
pid匯編程序 發布:2024-11-02 08:28:32 瀏覽:323
c語言數組scanf 發布:2024-11-02 08:28:20 瀏覽:784
android文本框居中 發布:2024-11-02 08:21:55 瀏覽:439
撕裂者哪個配置好 發布:2024-11-02 07:58:49 瀏覽:990
c編寫的程序經過編譯 發布:2024-11-02 07:41:18 瀏覽:941
mc伺服器靈魂綁定如何出售 發布:2024-11-02 07:39:36 瀏覽:583
cf伺服器不同如何一起玩游戲 發布:2024-11-02 07:38:24 瀏覽:945
手機壓縮游戲 發布:2024-11-02 07:27:03 瀏覽:451
c語言的四書五經 發布:2024-11-02 07:21:42 瀏覽:742
vbaexcel資料庫 發布:2024-11-02 07:16:09 瀏覽:11