从jQuery / XML对象

时间:2016-09-19 04:21:03

标签: javascript jquery xml

我正在做一个基于JS的小型XML增强器,给定一个XML文件,计算树中的一些东西,并在<pre></pre>标签上打印(用highlight.js美化)我的内容修改过的文件。

因为我使用jQuery进行计算,所以我在进程结束时获得了一个jQuery对象。

目前,我的代码仅限于: $("#output").append(xmlComputed)

但很明显,在浏览器中,我获得了一个我的xml内容的解析形式,没有任何标签。

所以我想知道我可以使用什么样的方法从jQuery节点获取字符串中的完整xml节点,就像我想的.html()一样?

所以,我将能够逃脱特殊字符并打印结果。

提前谢谢!

[编辑]我曾试过这个:Convert xml to string with jQuery 但我只获取了我的x​​ml文档的开头,例如<!--xml version=1.0-->

3 个答案:

答案 0 :(得分:0)

()

就像你可以使用jquery获取你的xml文件一样。在这里,您可以以字符串的格式获取整个xml。然后你可以玩自己的风格

答案 1 :(得分:0)

You can use dataType: 'xml' within your ajax.

答案 2 :(得分:0)

最后,我设法一点一点找到了......

所以一开始我有一个 jQuery对象xmlComputed

我使用.get()函数转换了 Javascript节点,没有任何参数,它返回节点数组

数组的第一个条目是xml初始标记<!--xml version=1.0-->,然后第二个是文本内容,我的主节点是第三个(索引2)(实际上解决了Failed to execute 'serializeToString' on 'XMLSerializer': parameter 1 is not of type 'Node'.问题) 。

使用XMLSerializer,如许多帖子所提到的,我在xmlString

中得到字符串
var oSerializer = new XMLSerializer(); 
var xmlString = oSerializer.serializeToString(gpxContent.get()[2]);

然后对于转义,只需按照另一个回答how to escape xml entities in javascript?

if (!String.prototype.encodeHTML) {
  String.prototype.encodeHTML = function () {
    return this.replace(/&/g, '&amp;')
               .replace(/</g, '&lt;')
               .replace(/>/g, '&gt;')
               .replace(/"/g, '&quot;')
               .replace(/'/g, '&apos;');
  };
}

通过xmlString.encodeHTML(),我获得了一个准美化的文本。

希望它对某人有用!