我必须在特定位置的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/

10-04 22:59