使用jQuery将xml文档转换回字符串

时间:2014-03-25 22:28:29

标签: javascript jquery xml

我正在尝试解析xml格式的字符串,删除其中一个元素,然后将其写回字符串。全部都带有标准的jQuery函数。这是我似乎无法弄清楚的最后一步。

var $xml = $(somexmlstring);
var element = $xml.find('name:contains("'+somevalue+'")');
element.remove();
var newxmlstring = $xml.dunno(); 

我可以使用什么函数将$ xml DOM转换回字符串?

4 个答案:

答案 0 :(得分:5)

帮助您修复jsfiddle中的代码:

var data = '<value><url>foo</url><name>bar</name></value><value><url>foo</url><name>bar</name></value>'
var xml = $.parseXML('<root>' + data + '</root>');
var $xml = $(xml);
console.log('xml', $xml.find('root').html());

修复在最后一行:`$ xml。查找(&#39; root&#39;) .html()

答案 1 :(得分:3)

如果首先用父元素包装jQuery对象,然后在父元素上调用.html(),则可以使用.html()

var $xml = $(somexmlstring);
$xml.find('name:contains("' + somevalue + '")').remove();
var newxmlstring = $('<x></x>').append($xml).html(); 

即使原始XML字符串没有单个根元素,这也有效。但是,如果原始XML字符串包含XML声明(如<?xml version="1.0" encoding="UTF-8"?>)。

,则它不起作用

jsfiddle


如果原始XML字符串是有效的XML文档,可选地在开头包含XML声明,您可能希望创建如下的jQuery对象:

var $xml = $($.parseXML(somexmlstring).documentElement);
$xml.find('name:contains("' + somevalue + '")').remove();
var newxmlstring = $('<x></x>').append($xml).html(); 

jsfiddle

答案 2 :(得分:0)

只要您的XML文档不包含一些额外的花哨名称空间,那么它很简单:

var newxmlstring = $xml.html(); 

答案 3 :(得分:0)

你不需要jquery,使用XMLSerializer

new XMLSerializer().serializeToString(xmlobj.documentElement);