如何使用JQuery的parseXML将转义的字符串解析为XML对象?

时间:2019-03-13 16:53:25

标签: javascript jquery xml parsing

我有一个很大的XML文件,该文件用< > "等转义了。 我测试了XML,并验证了它的格式正确。我怀疑在转义XML保留字符时存在一些问题。

示例:从&lt;到“ <”

这是我正在做的事的一个例子:

xml_string = “&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;yes&quot;?&gt;&lt;root&gt;&lt;test&gt;&lt;/test&gt;&lt;/root&gt”;
xml_object = $.parseXML(unescape(xml_string));

我不断从parseXML中收到“无效的XML”错误。

1 个答案:

答案 0 :(得分:2)

在这种情况下unescape()函数不起作用。相反,您可以在下面的答案中使用decode()函数。这是旧的,但尝试过并属实。基本上,通过将值分配给ghost元素,我们可以在那里将其“转义”。

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="products">
  <h1>Products</h1>
  <p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem</p>
  <img id="product-mouseover" src="images/001-malware.png" alt="">
  <img id="product-mouseover" src="images/002-smartphone.png" alt="">
</div>
var xml_string = '&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;yes&quot;?&gt;&lt;root&gt;&lt;test&gt;&lt;/test&gt;&lt;/root&gt';


function decode(input) {
  var txt = document.createElement("textarea");
  txt.innerHTML = input;
  return txt.value;
}

var decodedString = decode(xml_string);
console.log('Decoded: ', decodedString);

var xml_object = $.parseXML(decodedString);