如何添加特殊字符,如&&燃气轮机;在XML文件中使用JavaScript
我正在使用Javascript生成XML。如果XML中没有特殊字符,它就可以正常工作。否则,它将生成以下消息:“无效xml” 我尝试替换一些特殊字符,例如:如何添加特殊字符,如&&燃气轮机;在XML文件中使用JavaScript,javascript,xml,Javascript,Xml,我正在使用Javascript生成XML。如果XML中没有特殊字符,它就可以正常工作。否则,它将生成以下消息:“无效xml” 我尝试替换一些特殊字符,例如: xmlData=xmlData.replaceAll(">",">"); xmlData=xmlData.replaceAll("&","&"); //but it doesn't work. 例如: <category label='ARR Builders & Develope
xmlData=xmlData.replaceAll(">",">");
xmlData=xmlData.replaceAll("&","&");
//but it doesn't work.
例如:
<category label='ARR Builders & Developers'>
谢谢。这将在JavaScript中完成替换:
xml=xml.replace(//g,”);
这用于将所有小于和大于的符号替换为其转义的等效符号。JavaScript为字符串对象提供了强大的
replace()
方法
一般而言,它的工作方式是:
var myString = yourString.replace([regular expression or simple string], [replacement string]);
.replace()
方法的第一个参数是要替换的原始字符串部分。它可以由纯字符串对象(甚至是文字)或正则表达式表示
正则表达式显然是选择子字符串的最强大的方法
第二个参数是要作为替换提供的字符串对象(甚至是文字)
在您的情况下,更换操作应如下所示:
xmlData=xmlData.replace(/&/g,"&");
xmlData=xmlData.replace(/>/g,">");
//this time it should work.
请注意,第一个替换操作是“与”,就好像您应该稍后尝试替换它一样,您肯定会搞乱预先存在的引用良好的实体,就像“&;gt;”
此外,请注意regex“g”标志,因为它将在整个文本中进行替换,而不仅仅是在第一场比赛中
我使用了正则表达式,但对于这样的简单替换,纯字符串将是一个完美的选择
您可以找到String.replace()
的完整参考。例如:
<category label='ARR Builders & Developers'>
var c=document.createElement(“类别”);
c、 setAttribute(“标签”、“ARR构建者和开发者”);
var s=新的XMLSerializer().serializeToString(c);
s、 //=>""
此策略应避免您提到的XML实体转义问题,但可能会有一些跨浏览器问题。如果要生成XML,请使用XML库,不要尝试将字符串混合在一起。这种方式简直是疯了。
replaceAll()
在JavaScript中默认不可用,除非您想扩展String.prototype
以包含replaceAll
,否则必须先替换&
,否则,结果将类似于&;燃气轮机代码>这不好。我已经尝试了。replace(&),“&;”)方法,它用&;但是,即使在运行这里使用的正则表达式时xml生成错误,也只会分别替换&和>的第一个实例。您需要使用全局标志使正则表达式与所有实例匹配,例如,/&/g
@jakeclarkson:您是对的。我将在编辑中指定此项。谢谢。我认为@maerics拥有最结构化和“最有礼貌”的解决方案,即使用简单字符串构造XML可能相当容易(但对于复杂的结构,通常更容易让人头疼)。