2012-06-29 57 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 

??? :_)