Я кодирую RSS-ридер в Javascript, используя XMLHttpRequest
.Чтение раздела XML CDATA с]] в нем
Для некоторых 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;
}
}
}
Кто-нибудь сталкивались с что-то подобное? Теперь я действительно не знаю, как приступить к комментариям и предложениям.
Это, кажется, ошибка в XML-синтаксическом анализаторе. Какую ОС/браузер/версию вы используете? – Phrogz
Браузер называется OBIGO, это браузер для мобильных телефонов – YasuDevil
Да, сломанный браузер. Раздел CDATA может содержать комбинации ']]'; только полный ']]>' заканчивает его. – StaxMan