2012-07-30 71 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));