2012-07-30 63 views
4

您好我需要从表单中的数据创建xml以将其发送到webservice。问题是.append()不区分大小写,所以.append('<EDO />')将创建<edo>。但是xml是区分大小写的,那么有没有办法解决这个问题?而且我选择了使用domObject而不是字符串,因为这样我就不必编写尾标了,在我的情况下会有什么困难。jquery .append()区分大小写的元素

回答

3

最后为@弗雷德里克哈米迪说,做区分大小写XML我使用这些功能:

var domA = $.parseXML("<EDO_A />").documentElement;创建元素

$(domA).append($.parseXML('<EDO_Child />').documentElement);从字符串添加孩子

$(domA).append(domB)domA.appendChild(domB)添加子对象

6

尝试使用$.parseXML()创建XML元素:

yourObject.append($.parseXML("<EDO />").documentElement); 
+0

谢谢,这似乎工作,但伊伦另一个问题。我已经创建了元素'var domA = $ .parseXML(“”).documentElement;'并且添加像这样的$'(domA).append($。parseXML('').documentElement); '但是当我有另一个对象来检查'var domB = $ .parseXML(“”).documentElement;'我不知道如何将它添加到'domA'。我尝试了'$(domA).append(domB);'或'$(domA).append($。parseXML(serializer.serializeToString(domB);)。documentElement);''where'serializer' var'serializer = new XMLSerializer();'但它不起作用 – david 2012-07-30 10:57:37

+0

@david,当你尝试'$(domA).append(domB)'时,你会收到什么错误信息? – 2012-07-30 11:05:23

+0

对不起,我犯了一个错误,而不是'$ .parseXML',我只有'。.'而不是'domA'是坏对象,它没有工作。现在'$(domA).append(domB)'完美工作,我发现'domA.appendChild(domB)'也可以。唯一的问题是什么更快 – david 2012-07-30 11:12:51

3

jQuery.parseXML将始终创建新的DOMParse和新的Document,因此它非常重。

更好的方法是使用(直观)parseHTML,使用context放慢参数:

// Create the context XML document; doc and $doc is reusable 
var doc = (new DOMParser()).parseFromString('<root/>', 'text/xml'); 
var $doc = $(doc.documentElement) 

// Create case-sensitive XML element; 
// this will call doc.createElement('EDO'), as of jQuery 2.1.3 
$doc.append($.parseHTML('<EDO />', doc));