如何添加特殊字符,如& >在使用JavaScript的XML文件中

时间:2011-12-01 13:05:51

标签: javascript xml

我正在使用Javascript生成XML。如果XML中没有特殊字符,它可以正常工作。否则,它将生成此消息:“invalid xml”。

我尝试替换一些特殊字符,例如:

xmlData=xmlData.replaceAll(">",">");
xmlData=xmlData.replaceAll("&","&");
//but it doesn't work.

例如:

<category label='ARR Builders & Developers'>

感谢。

3 个答案:

答案 0 :(得分:4)

考虑generating the XML using DOM methods。例如:

var c = document.createElement("category");
c.setAttribute("label", "ARR Builders & Developers");
var s = new XMLSerializer().serializeToString(c);
s; // => "<category label=\"ARR Builder &amp; Developers\"></category>"

此策略应避免XML实体转移您提及但可能存在一些跨浏览器问题的问题。

答案 1 :(得分:2)

这将在JavaScript中进行替换:

xml = xml.replace(/</g, "&lt;");
xml = xml.replace(/>/g, "&gt;");

这使用regular expression literals替换所有小于和大于符号的转义等价物。

答案 2 :(得分:1)

JavaScript为字符串对象提供了强大的replace()方法。

一般而言 - 基本术语,它的工作原理如下:

var myString = yourString.replace([regular expression or simple string], [replacement string]);

.replace()方法的第一个参数是您要替换的原始字符串的一部分。它可以由普通字符串对象(甚至是文字对象)或正则表达式表示。

正则表达式显然是选择子字符串的最有效方法。

第二个参数是您想要作为替换提供的字符串对象(甚至是文字)。

在您的情况下,替换操作应如下所示:

xmlData=xmlData.replace(/&/g,"&amp;");
xmlData=xmlData.replace(/>/g,"&gt;");
//this time it should work.

请注意,第一个替换操作是&符号,就好像您应该稍后尝试替换它一样,您可能会将预先存在的引用良好的实体搞砸,就像"&amp;gt;"一样。

此外,请注意正则表达式'g'标志,因为替换将在整个文本中进行,而不仅仅是在第一场比赛中。

我使用正则表达式,但对于像这样的简单替换,普通字符串也是完美的选择。

您可以找到String.replace() here的完整参考。