javascript - 读取其中包含 ]] 的 XML CDATA 部分

标签 javascript xml cdata

我正在使用 XMLHttpRequest 用 Ja​​vascript 编写一个 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/

相关文章:

javascript - 是否可以通过函数内部声明的变量获取函数名

ruby - Nokogiri:如何通过其子标签的内容之一获取 xml 类

java - 有没有办法强制 JAVA 在 Elements 中打印空的 CDATA?

json - Umbraco 7.2.8相关链接 Razor 展示

Javascript Json唯一值排序和存储

javascript - 在 Node.js 中运行 sequelize 时会导致超时的原因是什么?

php - 一种 PHP 表单中的两种表单操作

java - XML 布局问题

xml - 为什么在 &lt;![CDATA[]]> 中包含 XML 标记数据

java - CDATA XML 在解析时被截断