2012-02-29 103 views
2

我有這樣PHP錯誤解析XML(SimpleXML的)

<?xml version="1.0"?> 
<test>Total</test> 
<books> 
    <mybook id="1"> 
     <blabla>jkjk</blabla> 
    </mybook>¨ 
</books> 

一個XML文件,如果我分析它像用SimpleXML

$xml = simplexml_load_file($filename); 

它說

simplexml_load_file() [function.simplexml-load-file]: ./uploads/test.xml:3: parser error : Extra content at the end of the document 

但如果刪除

<test>Total</test> 

它在xml文件開始工作....

任何想法?? 謝謝

回答

2

這是它寫的。額外的內容。

它是什麼? ¨之後</mybook>。所以這個文件是無效的。如果你希望它有效,它看起來像:

<bookinfo> 
    <test>Total</test> 
    <books> 
     <mybook id="1"> 
      <blabla>jkjk</blabla> 
     </mybook> 
    </books> 
    </bookinfo> 

注意:一個XML必須總是一個,正好一個根元素。

+0

這是*也*無效! – 2012-02-29 14:56:48

+0

對,糾正 – axiomer 2012-02-29 14:58:14

+0

誰不想這麼做:爲什麼?這是完全正確的答案。與Petter's(+4)幾乎相同,但*之前一分鐘*。任何原因?我想知道。 – axiomer 2012-02-29 14:59:23

13

你需要有一個根元素在你的XML,即

<document> 
    <test>Total</test> 
    <books> 
     <mybook id="1"> 
      <blabla>jkjk</blabla> 
     </mybook> 
    </books> 
</document> 
2

你的XML是無效的。 XML必須只有一個根元素。

解析器抱怨的「額外內容」是<books>元素。