Ошибка PHP при разборе XML (simpleXML) - PullRequest
3 голосов
/ 29 февраля 2012

У меня есть XML-файл, подобный этому

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

Если я анализирую его таким образом с 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-файла, он работает ....

какие-либо идеи ??спасибо

Ответы [ 3 ]

13 голосов
/ 29 февраля 2012

В вашем xml должен быть корневой элемент, т.е.

<document>
    <test>Total</test>
    <books>
        <mybook id="1">
            <blabla>jkjk</blabla>
        </mybook>
    </books>
</document>
2 голосов
/ 29 февраля 2012

Ваш XML неверен.XML должен иметь один и только один корневой элемент.

"Дополнительный контент", на который жалуется синтаксический анализатор, - это элемент <books>.

2 голосов
/ 29 февраля 2012

Это то, что он пишет.Дополнительный контент.

А что это?¨ после </mybook>.Так что файл недействителен.Если вы хотите, чтобы он был действительным, он выглядел бы так:

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

Примечание: XML должен быть всегда ОДИН, ровно один корневой элемент.

...