0

假设xml是:

<title><script>alert("Hello");</script></title>

下面的代码返回 null。

txt=xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;

我希望 txt 具有以下值,并且我想将其显示为文本。

<script>alert("Hello");</script>

我如何解析xml?

xml 也可以是这样的:

<title><sample>alert("Hello");</sample></title> 

我只想将标题标签中的全部内容作为文本而不考虑标题标签的内容

4

1 回答 1

0

这是解决方案!

<script type="text/javascript">
var xml = "<title><sample>alert(1);</sample></title>";
if (window.DOMParser)
{
    parser=new DOMParser();
    xmlDoc=parser.parseFromString(xml,"text/xml");

    var data = xmlDoc.getElementsByTagName("title");
    for (i=0;i<data.length;i++){
        document.write("<div class='script'>")
        document.write("&lt;"+xmlDoc.getElementsByTagName("title")[i].childNodes[0].nodeName+">"+xmlDoc.getElementsByTagName("sample")[i].childNodes[0].nodeValue+"&lt;/"+xmlDoc.getElementsByTagName("title")[i].childNodes[0].nodeName+">");
        document.write("</div>")
    }
}
</script>

注意脚本标签“< script>”中的空白,这将避免执行其中的脚本,如果删除此空白,则脚本将被执行,并且输出将显示在警报中而不是文档正文中。

还要注意我在 xml 字符串中使用的反斜杠“\”,这是因为 JavaScript 以标签结尾,所以添加反斜杠将使其成为字符串的一部分。

于 2012-11-15T07:14:50.477 回答