XML DOM 改变节点值
nodeValue
属性用于改变节点值。
setAttribute()
方法用于改变属性值。
改变元素的值
在 DOM 中,一切都是节点。元素节点没有文本值。
元素节点的文本值存储在子节点中。该节点被称为文本节点。
如需更改元素的文本值,必须更改元素的文本节点的值。
改变文本节点的值
nodeValue
属性可用于更改文本节点的值。
下面的代码更改第一个 <title> 元素的文本节点值:
例子 1
xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue = "潮菜天下"
例子解释:
- 假设 books.xml 被加载到
xmlDoc
中 - 获取 <title> 元素的第一个子节点
- 把此文本节点的节点值更改为 "潮菜天下"
例子 2
循环并更改所有 <title> 元素的文本节点:
for (i = 0; i < x.length; i++) { x[i].childNodes[0].nodeValue = "已更改的文本"; }
改变属性的值
在 DOM 中,属性也是节点。与元素节点不同的是,属性节点拥有文本值。
更改属性值的方法是更改其文本值。
可以通过使用 setAttribute()
方法或属性节点的 nodeValue
属性来完成这个任务。
使用 setAttribute() 改变属性
setAttribute()
方法设置已有属性的值,或创建新属性。
setAttribute()
方法可更改属性的值。如果该属性不存在,则创建一个新属性。
这段代码更改 <book> 元素的 category 属性:
例子 1
xmlDoc.getElementsByTagName("book")[0].setAttribute("category","烹饪");
例子解释:
- 假设 books.xml 已被加载到
xmlDoc
中 - 获取第一个 <book> 元素
- 将 "category" 属性的值更改为 "烹饪"
例子 2
循环遍历所有 <title> 元素并添加新属性:
x = xmlDoc.getElementsByTagName('title'); for (i = 0; i < x.length; i++) { x[i].setAttribute("edition","第一版"); }
注意:如果该属性不存在,则会创建一个新属性(带有指定的名称和值)。
使用 nodeValue 改变属性
nodeValue
属性是属性节点的值。
更改 nodeValue
属性可更改属性的值。
实例
xmlDoc.getElementsByTagName("book")[0].getAttributeNode("category").nodeValue = "烹饪";
例子解释:
- 假设 books.xml 已被加载到
xmlDoc
中 - 获取第一个 <book> 元素的 "category" 属性
- 将属性节点的值更改为 "烹饪"