我必须在特定位置的XML文件中插入数据。例如:
<tag1>
<tag2>
<tag3>data</tag3>
</tag2>
<tag2>
<tag3>data2</tag3>
</tag2>
</tag1>
我必须使用DOM找到“data2”,而不是返回并在其中包含“data2”的“tag2”中插入新元素。更具体地说,我正在编写一个获取参数的函数:搜索键和要插入的数据。
如何找到“data2”,以及如何返回“tag2”以插入那里?
最佳答案
将您上面的XML数据用作字符串:
XMLDocument.prototype.getElementByContent = function getElementByContent(str) {
var elems = this.querySelectorAll("*");
for (var i = 0, l = elems.length; i < l; i++) {
if (elems[i].textContent === str) {
return elems[i];
}
}
};
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(xmlString, "text/xml");
var tag = xmlDoc.createElement("tag3");
var content = xmlDoc.createTextNode("data3");
tag.appendChild(content);
xmlDoc.getElementByContent("data2").parentNode.appendChild(tag);
/*
#docment▼ (XMLDocument)
<tag1>▼
<tag2>▼
<tag3>data</tag3>
</tag2>
<tag2>▼
<tag3>data2</tag3>
<tag3>data3</tag3>
</tag2>
</tag1>
*/
工作示例:http://jsfiddle.net/elias94xx/nFB7G/