Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何添加特殊字符,如&&燃气轮机;在XML文件中使用JavaScript_Javascript_Xml - Fatal编程技术网

如何添加特殊字符,如&&燃气轮机;在XML文件中使用JavaScript

如何添加特殊字符,如&&燃气轮机;在XML文件中使用JavaScript,javascript,xml,Javascript,Xml,我正在使用Javascript生成XML。如果XML中没有特殊字符,它就可以正常工作。否则,它将生成以下消息:“无效xml” 我尝试替换一些特殊字符,例如: xmlData=xmlData.replaceAll(">","&gt;"); xmlData=xmlData.replaceAll("&","&amp;"); //but it doesn't work. 例如: <category label='ARR Builders & Develope

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

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

xmlData=xmlData.replaceAll(">","&gt;");
xmlData=xmlData.replaceAll("&","&amp;");
//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,"&amp;");
xmlData=xmlData.replace(/>/g,"&gt;");
//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可能相当容易(但对于复杂的结构,通常更容易让人头疼)。