Проблемы с анализом XML с использованием Ruby XML Parser - PullRequest
0 голосов
/ 02 декабря 2011

У меня проблемы с анализом возвращенного XML с помощью этой команды: XML::Parser.string(xml_string).parse

Вот XML, который я пытаюсь проанализировать:

<div style=\"border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;\">
<h4>A PHP Error was encountered</h4>
<p>Severity: Notice</p>
<p>Message:  Undefined index:  HTTP_USER_AGENT</p>
<p>Filename: test</p>
<p>Line Number: test</p>
</div><?xml version=\"1.0\" encoding=\"UTF-8\"?>
<response>
    <review>
        <reviewer><![CDATA[test]]></reviewer>
        <ip><![CDATA[test]]></ip>
        rating><![CDATA[test]]></rating>
        <content><![CDATA[test.]]></content>
        <date><![CDATA[test]]></date>
    </review>
</response>

Я получаю эту ошибку:

Fatal error: XML declaration allowed only at the start of the document at :10.Fatal error: Extra content at the end of the document at :11.
LibXML::XML::Error: Fatal error: Extra content at the end of the document

Что здесь происходит?

Ответы [ 2 ]

2 голосов
/ 02 декабря 2011

Ваша строка не является допустимым документом XML; Похоже, это два документа, соединенные вместе. (Первый - "<div>", второй - "<response>".)

Попробуйте разделить их на две строки и проанализировать каждую из них по отдельности.

1 голос
/ 02 декабря 2011

Когда вы получаете xml_string, я считаю, что вам нужно установить пользовательский агент. Вы не предоставляете пользовательский агент, поэтому сервер, обслуживающий XML, задыхается.

Используйте этот код для добавления пользовательского агента к вашему запросу:

resp = http.post(path, query, {'User-Agent' => "Ruby"})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...