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 に答える