2011-01-11 9 views
5

私はXMLHttpRequestを使ってJavascriptでRSSリーダーをコーディングしています。いくつかのRSSは、私は問題はなかったが、いくつかのケースでxmlDocument.firstChild属性が働いたXMLと、私は以下のことがわかっ働いていなかったものとの違いを確認しようとした後、常にNULLXMLCDATAセクションを]]]で読む

たフィードの

エラーの原因です。

<item> 
    <description> 
     <![CDATA[This is a description for a test [...]]]> 
    </description> 
</item> 

その私がCDATAの閉じ括弧が続く閉じ括弧が私のエラーの原因となっている必要があり、このdescriptionタグで、私は、同じXMLのためのLINQを使ってC#でコードを作ったし、すべてが働いていたので。

CDATAの閉じ括弧がこの奇妙な行動を起こしている直前で閉じ括弧。私がC#とLINQを使って同じXMLを読み込もうと試みたテストでは、すべてうまくいった。

は、それから私は、次の

<![CDATA[This is a description for a test [...] ]]>

そして、それは働いていたように、クロージング括弧の間にスペースを追加しようとしました!

私のjavascriptのコード

function LoadRSS() { 
    http_request.onreadystatechange = function() { showContent(http_request); }; 
    http_request.open("GET", "./feeds/test.xml", true); 
    http_request.send(false); 
} 


function showContent(http_request) { 
    if (http_request.readyState == 4) { 
     if (http_request.status == 200) { 
      var parser = new DOMParser(); 
      var xml_doc = parser.parseFromString(http_request.responseText, "text/xml"); 
      alert(xml_doc.firstChild) 
     } 
     else { 
      xml_doc = null; 
     } 
    } 
} 

誰でも似たような直面しているのか?今私は本当にどのようにコメントや提案を進めるのか分からず、歓迎されています。

+1

これはXMLパーサーのバグのようです。どのOS /ブラウザ/バージョンを使用していますか? – Phrogz

+0

ブラウザはOBIGOと呼ばれ、携帯電話のブラウザです – YasuDevil

+1

壊れたブラウザがあります。 CDATAセクションには ']]'の組み合わせを含めることができます。のみフル]]]> 'それを終了します。 – StaxMan

答えて

5

CDATAセクションの解析が間違っているようですが、]]>だけがセクションの最後を示し、他の角括弧はこれにまったく影響しません。ただ、常にCDATAブロックの終わりの前にスペースが含まれていない理由は...「どのように進めるべき」については

+0

まあ、大括弧で置き換えて私の問題を解決します。私は別のブラウザで同じコードを実行して何が起こるのかを見てみましょう。 – YasuDevil

+1

最初の部分は間違いありません - はい、エンティティを含めることはできますが、それらは解析されませんが、正確にそのまま含まれます。エンティティを使用して何かを引用することはできません。 – StaxMan

+1

@StaxMan:申し訳ありませんが、私はそのセクションを誤解しました。属性値のみであり、一般的なCDATAセクションではありません。 @ YasuDevil:私のソリューションは結局動作しないだろうと思う。 – casablanca

1

?生成されたXMLを制御できませんか?もしそうなら、JSを使って:

var xml = http_request.responseText.replace(/\]\]>/g, ' ]]>'); 
var xml_doc = parser.parseFromString(xml, "text/xml"); 
+0

はい、それは良い解決策です、ありがとうございました – YasuDevil

関連する問題