2012-06-29 55 views
3

我正嘗試使用Javascript修改XML結構中的狀態標誌。使用我相信在互聯網上找到的例子這應該工作:如何使用JQuery修改XML

test = "<?xml version='1.0' encoding='utf-8' standalone='no' ?>" + 
    "<resultaat>" + 
     "<type>6</type>" + 
     "<status>I</status>" + 
     "<start_datum>2012-06-16 00:00:00</start_datum>" + 
     "<eind_datum></eind_datum>" + 
    "</resultaat>" 

要更改狀態字段的內容:

$(test).find("status").text("D") 

結果卻是測試不被修改,並且仍然包含舊狀態I

感謝您的答案

正確的見解是你需要首先轉換爲XMLObject並修改它。

下面是我怎麼會做它:

/* Convert Text to XML Object */ 
doc = $.parseXML(test) 

/* Change the fields required */ 
$(doc).find('status').text('D') 

/* Back to Text */ 
str = (new XMLSerializer()).serializeToString(doc); 
+3

這是因爲'test'是一個字符串,你不會修改它。 –

+0

這是我跳過的步驟。 – Tramov

回答

5

Use jQuery.parseXML()

<p id="someElement"></p> 
<p id="anotherElement"></p> 

var xml = "<rss version='2.0'><channel><title>RSS Title</title></channel></rss>", 
    xmlDoc = $.parseXML(xml), 
    $xml = $(xmlDoc), 
    $title = $xml.find("title"); 

/* append "RSS Title" to #someElement */ 
$("#someElement").append($title.text()); 

/* change the title to "XML Title" */ 
$title.text("XML Title"); 

/* append "XML Title" to #anotherElement */ 
$("#anotherElement").append($title.text()); 
+0

感謝您的意見,我最後做這樣的: /*轉換爲XML對象*/ DOC = $ .parseXML(測試) /*修改內容*/ $(DOC).find( ''status')。text('D') /*返回文本*/ str =(new XMLSerializer())。serializeToString(doc); – Tramov

0

你需要編寫的代碼是這樣的......

test = "<?xml version='1.0' encoding='utf-8' standalone='no' ?>" + 
    "<resultaat>" + 
     "<type>6</type>" + 
     "<status>I</status>" + 
     "<start_datum>2012-06-16 00:00:00</start_datum>" + 
     "<eind_datum></eind_datum>" + 
    "</resultaat>"; 

def = $(test).find("status").text("D"); 

console.log(def); 

爲了讓工作....

+0

這只是給你''。 –

+0

如果您仔細看到控制檯中的狀態變量,它將設置爲「D」,因此它實際上已更改。 – Hardik

+0

這不是重點; OP希望整個XML回來,而不僅僅是一個節點。 –

0

Mmm毫米,這回答工程...但不是總之。我使用的是舊版本的WebKit內至極Tidesdk捆綁和我有一些奇怪的問題:

$(xml).find("whatever").append("<however></however>"); 
// doesn't modify xml 

$("<however></however>").appendTo($(xml).find("whatever")); 
// does modify xml 

??? :_)