2011-12-02 13 views
0

を使用してXMLを解析私は悩み、いくつかは、このコマンドを使用してXMLを返されたパースを持っています:ここでXML::Parser.string(xml_string).parseトラブルRubyのXMLパーサ

は、私が解析しようとしている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 

ここでは何が起こっていますか?

+0

PHPの対応により、問題の内容が正確に伝えられました。 –

答えて

1

xml_stringをフェッチするときに、ユーザーエージェントを設定する必要があると思います。ユーザーエージェントを提供していないので、XMLを処理しているサーバーが窒息しています。

使用このコードあなたの要求にユーザーエージェントを追加する:

resp = http.post(path, query, {'User-Agent' => "Ruby"}) 
+0

これは私が投稿をする方法です。 resp = http.post(パス、クエリ) review_response = resp.body – Spencer

+0

更新されたレスポンスを参照してください。 –

2

あなたの文字列が有効なXML文書ではありません。それは一緒に連結された2つの文書であるように見えます。最初の1つは "<div>"で、2番目の文字は "<response>"です。

2つの文字列に分離し、それぞれ別々に解析してみましょう。

+0

これはハックな解決策であり、問​​題の根本的な原因を解決するものではありません。 –

+0

@alecgorge:これは彼の問題の解決策ではなく、「なぜこの文字列はXMLとして解析されないのですか?」という質問に対する答えです。 – maerics