我正在使用 XMLHttpRequest
用 Javascript 编写一个 RSS 阅读器.
对于某些 RSS 提要,我没有遇到任何问题,但在某些情况下 xmlDocument.firstChild
属性始终为 NULL
在尝试查看有效的 XML 和无效的 XML 之间的差异后,我发现错误的原因如下。
<item>
<description>
<![CDATA[This is a description for a test [...]]]>
</description>
</item>
因为在这个描述标签中我有一个右括号后跟 CDATA 的右括号导致了我的错误,所以我使用 C# 使用 LINQ 为相同的 XML 编写了一个代码并且一切正常。
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;
}
}
}
有人遇到过类似的事情吗?现在真的不知道如何进行了,欢迎大家提出意见和建议。
最佳答案
无论您使用的是什么浏览器,似乎都在错误地解析 CDATA 部分——只有 ]]>
标记该部分的结尾,任何其他方括号根本不会影响这一点。
关于javascript - 读取其中包含 ]] 的 XML CDATA 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4660546/