有没有办法加载XML文件,转义找到的任何'&',然后解析它?

时间:2012-03-01 13:25:05

标签: javascript xmlhttprequest xml-parsing

我正在尝试加载XML文件,但XML中的内容中包含&符号。有没有办法在代码中逃避它们?而不是编辑实际的XML文件?我发现的所有其他答案都建议我在使用Javascript加载之前编辑代码,但这对我来说不是一个选项,因为我从一个总是在变化的数据库中提取它。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

从我得到的问题是你想要更换&符号?如果是这样,我实际上只是在前几天处理了这个问题。

我接近它的方式是我加载了XML文件,然后我接受了 response.Text,它将XML文件对象转换为字符串,并将其编码为十六进制。然后我替换了所有“%26”,这是“&”的十六进制,带有“& _amp;” (取出下划线!消息将其转换为'&'),XML可以理解。我然后解码它并再次作为字符串加载它。这就是你要做的一切。这是一些示例代码......

var x;

function loadXMLFile(xmlFile){
   var xmlhttp = new window.XMLHttpRequest();
   xmlhttp.open("GET",xmlFile,false);
   xmlhttp.send(null);

   //encodes the xml, replaces all invalid characters with their hex value, decodes the xml, then parses it.
   var encoded = encodeURIComponent(xmlhttp.responseText);
   var replaced = encoded.replace(/%26/g,"&");  // &
   var decoded = decodeURIComponent(replaced);

   //Pass in the new XML string, which turns into an XML Object which you can parse.
   parser=new DOMParser();
   xmlDoc=parser.parseFromString(decoded,"text/xml");

   x=xmlDoc.getElementsByTagName("Sample_Tag");
  }