XML DOM节点操作:添加节点

下面的实例使用 XML 文件 books.xml

函数 loadXMLDoc(),位于外部 JavaScript 中,用于加载 XML 文件。

在最后一个子节点之后添加一个节点
本例使用 appendChild() 方法向一个已有的节点添加一个子节点。

HTML

在指定的子节点之前添加一个节点
本例使用 insertBefore() 方法在一个指定的子节点之前插入一个节点。

HTML

添加一个新属性
本例使用 setAttribute() 方法添加一个新的属性。

HTML

向文本节点添加数据
本例使用 insertData() 把数据插入一个已有的文本节点中。

HTML

添加节点 – appendChild()

appendChild() 方法向一个已有的节点添加一个子节点。

新节点会添加(追加)到任何已有的子节点之后。

注意:如果节点的位置很重要,请使用 insertBefore() 方法。

下面的代码片段创建一个元素(<edition>),并把它添加到第一个 <book> 元素的最后一个子节点后面:

xmlDoc=loadXMLDoc("books.xml");

newel=xmlDoc.createElement("edition");

x=xmlDoc.getElementsByTagName("book")[0];
x.appendChild(newel);

例子解释:

  1. 通过使用 loadXMLDoc() 把 “books.xml” 载入 xmlDoc 中
  2. 创建一个新的元素节点 <edition>
  3. 向第一个 <book> 元素追加这个元素节点
HTML

遍历并向所有 <book> 元素添加一个元素:

HTML

插入节点 – insertBefore()

insertBefore() 方法用于在指定的子节点之前插入节点。

在被添加的节点的位置很重要时,此方法很有用。

xmlDoc=loadXMLDoc("books.xml");

newNode=xmlDoc.createElement("book");

x=xmlDoc.documentElement;
y=xmlDoc.getElementsByTagName("book")[3];

x.insertBefore(newNode,y);

例子解释:

  1. 通过使用 loadXMLDoc() 把 “books.xml” 载入 xmlDoc 中
  2. 创建一个新的元素节点 <book>
  3. 把这个节点插到最后一个 <book> 元素节点之前
HTML

如果 insertBefore() 的第二个参数是 null,新节点将添加到最后一个已有的子节点之后。

x.insertBefore(newNode,null) 和 x.appendChild(newNode) 都可以向 x 追加一个新的子节点。

添加新属性

addAtribute() 这个方法是不存在的。

如果属性不存在,则 setAttribute() 可创建一个新的属性:

xmlDoc=loadXMLDoc("books.xml");

x=xmlDoc.getElementsByTagName('book');
x[0].setAttribute("edition","first");

例子解释:

  1. 通过使用 loadXMLDoc() 把 “books.xml” 载入 xmlDoc 中
  2. 把第一个 <book> 元素的 “edition” 属性的值设置(创建)”first”
HTML

注释:如果属性已存在,setAttribute() 方法将覆盖已有的值。

向文本节点添加文本 – insertData()

insertData() 方法将数据插入已有的文本节点中。

insertData() 方法有两个参数:

  • offset – 在何处开始插入字符(以 0 开始)
  • string – 要插入的字符串

下面的代码片段将把 “Easy” 添加到已加载的 XML 的第一个 <title> 元素的文本节点:

xmlDoc=loadXMLDoc("books.xml");

x=xmlDoc.getElementsByTagName("title")[0].childNodes[0];

x.insertData(0,"Hello ");
HTML
阅读剩余 90%

作者:terry,如若转载,请注明出处:https://www.web176.com/xmldom/10820.html

(0)
打赏 支付宝 支付宝 微信 微信
terryterry
上一篇 2023年2月26日 下午6:28
下一篇 2023年2月27日 下午12:02

相关推荐

发表回复

登录后才能评论