解析xml javascript-将标签显示为文本

时间:2012-11-15 06:40:05

标签: javascript xml-parsing

假设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> 

我只想将标题标记中的所有内容都作为文本,而不管标题标记的内容是什么

1 个答案:

答案 0 :(得分: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>

注意脚本标记“&lt; script&gt;”中的空格,这将避免执行其中的脚本,如果删除此空格,则脚本将被执行,输出将显示在alert中文件正文。

还要注意我在xml字符串中使用的反斜杠'\',这是因为JavaScript以标记结束,所以添加反斜杠会使它成为字符串的一部分。