我有一个XML标记/代码,如下所示。我想使用JavaScript或jQuery替换其中一个标记内的文本(在本例中为< begin> ...< / begin>)。
<part>
<begin>A new beginning</begin>
<framework>Stuff here...</framework>
</part>
源位于textarea内。我有以下代码,但显然没有做我想要的。
code=$("xml-code").val(); // content of XML source
newBegin = "The same old beginning"; // new text inside <begin> tags
newBegin = "<begin>"+newBegin +"</begin>";
code=code.replace("<begin>",newBegin); // replace content
这只是附加到begin标记内的现有文本。我有一种感觉,这只能使用Regex,但不幸的是我不知道该怎么做。
答案 0 :(得分:2)
你可以使用parseXML() jQuery函数,然后用.find()/。text()替换相应的节点
var s = "<part><begin>A new beginning</begin><framework>Stuff here...</framework></part>";
var xmlDoc = $($.parseXML(s));
xmlDoc.find('begin').text('New beginning');
alert(xmlDoc.text());
答案 1 :(得分:0)
与其他答案类似,使用$.parseXML()
功能,您可以这样做:
var xml = $.parseXML($("xml-code").val());
xml.find('begin').text('The same old beginning');
请注意,无需替换整个节点,只需更改其文本即可。此外,如果有多个<begin>
节点也需要该文本,则此方法有效。
答案 2 :(得分:0)
您可以使用正则表达式,但最好不要这样做。使用DOM解析器。
var code = $('xml-code').html(); // content of XML source
var newBegin = "The same old beginning"; // new text inside <begin> tags
var regexp = new Regexp('(<part>)[^~]*(<\/part>)', i);
code = code.replace(regexp, '$1' + newBegin + '$2');