XML DOM 添加节点
XML DOM appendChild() 方法用于向一个已有的节点添加一个子节点
新节点会追加到任何已有的子节点之后
注意: 如果要在某个节点前插入节点,可以使用 insertBefore() 方法
范例
下面的 JavaScript 代码创建一个元素 ( <edition> ) ,并把它添加到第一个 <book> 元素的最后一个子节点后面
xmlDoc = loadXMLDoc("/static/media/dom/books.xml"); newel = xmlDoc.createElement("edition"); x = xmlDoc.getElementsByTagName("book")[0]; x.appendChild(newel);
使用 loadXMLDoc()
把 "/static/media/dom/books.xml" 载入 xmlDoc 中
创建一个新节点 <edition>
把这个节点追加到第一个 <book> 元素
范例 2
下面的 JavaScript 代码遍历并向所有 <book> 元素追加一个元素
xmlDoc=loadXMLDoc("/static/media/dom/books.xml"); x=xmlDoc.getElementsByTagName("book"); for (i=0;i<x.length;i++) { newel=xmlDoc.createElement("edition"); newtext=xmlDoc.createTextNode("first"); newel.appendChild(newtext); x[i].appendChild(newel); } // 输出所有 title 和 edition y=xmlDoc.getElementsByTagName("title"); z=xmlDoc.getElementsByTagName("edition"); for (i=0;i<y.length;i++) { document.write(y[i].childNodes[0].nodeValue); document.write(" - Edition: "); document.write(z[i].childNodes[0].nodeValue); document.write("<br>"); }
插入节点 - insertBefore()
XML DOM insertBefore() 方法用于在指定的子节点之前插入节点
如果被添加的节点的位置很重要时,此方法很有用
xmlDoc = loadXMLDoc("/static/media/dom/books.xml"); newNode = xmlDoc.createElement("book"); x = xmlDoc.documentElement; y = xmlDoc.getElementsByTagName("book")[3]; x.insertBefore(newNode,y);
使用 loadXMLDoc()
把 "/static/media/dom/books.xml" 载入 xmlDoc 中
创建一个新的元素节点 <book>
把这个新节点插到最后一个 <book> 元素节点之前
其它
如果 insertBefore() 的第二个参数是 null,新节点将被添加到最后一个已有的子节点之后
x.insertBefore(newNode,null)
和
x.appendChild(newNode)
都可以向 x 追加一个新的子节点
添加新属性
XML DOM setAttribute() 用于创建一个新的属性,前提是属性不存在
如果属性已存在,setAttribute() 方法将覆盖已有的值
注意 XML DOM addAtribute() 这个方法是不存在的
xmlDoc = loadXMLDoc("/static/media/dom/books.xml"); x = xmlDoc.getElementsByTagName('book'); x[0].setAttribute("edition","first");
使用 loadXMLDoc()
把 "/static/media/dom/books.xml" 载入 xmlDoc 中
把第一个 <book> 元素的 "edition" 属性的值设置为 "first"
向文本节点添加文本 - insertData()
XML DOM insertData() 方法用于将数据插入已有的文本节点中
insertData() 方法有两个参数
- offset - 在何处开始插入字符(以 0 开始)
- string - 要插入的字符串
下面的 JavaScript 脚本把 "Easy" 添加到已加载的 XML 的第一个 <title> 元素的文本节点
xmlDoc=loadXMLDoc("/static/media/dom/books.xml"); x=xmlDoc.getElementsByTagName("title")[0].childNodes[0]; x.insertData(0,"Easy ");