Я пишу RSS-ридер в Javascript, используя XMLHttpRequest
.
Для некоторых RSS-каналов у меня не было проблем, но в некоторых случаях атрибут xmlDocument.firstChild
всегда был NULL
Пытаясь увидеть различия между работающим XML и неработающим, я обнаружил, что причиной ошибки является следующее.
<item>
<description>
<![CDATA[This is a description for a test [...]]]>
</description>
</item>
Поскольку в этом теге описания у меня есть закрывающая скобка, после которой закрывающие скобки CDATA вызывают мою ошибку, я создал код на C # с использованием LINQ для того же XML, и все работало.
Закрывающая скобка, которая находится перед закрывающими скобками CDATA, вызывает это странное поведение. В качестве теста я пытался читать тот же XML с использованием C # и LINQ, все работало хорошо.
Затем я попытался добавить пробел между закрывающими скобками, как показано ниже
<![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;
}
}
}
Кто-нибудь сталкивался с чем-то подобным? Теперь я действительно не знаю, как поступить, любые комментарии и предложения приветствуются.