XML DOM 节点

XML DOM 节点


XML 文档中的每个成分都是一个节点。

节点

根据 DOM,XML 文档中的每个成分都是一个节点

DOM 是这样规定的:

  • 整个文档是一个文档节点
  • 每个 XML 标签是一个元素节点
  • 包含在 XML 元素中的文本是文本节点
  • 每一个 XML 属性是一个属性节点
  • 注释属于注释节点

DOM 实例

请看下面的 XML 文件 (books.xml):

<?xml version="1.0" encoding="ISO-8859-1"?>

<bookstore>

<book category="children">
  <title lang="en">Harry Potter</title> 
  <author>J K. Rowling</author> 
  <year>2005</year> 
  <price>29.99</price> 
</book>

<book category="cooking">
  <title lang="en">Everyday Italian</title> 
  <author>Giada De Laurentiis</author> 
  <year>2005</year> 
  <price>30.00</price> 
</book>

<book category="web">
  <title lang="en">Learning XML</title> 
  <author>Erik T. Ray</author> 
  <year>2003</year> 
  <price>39.95</price> 
</book>

<book category="web">
  <title lang="en">XQuery Kick Start</title> 
  <author>James McGovern</author> 
  <author>Per Bothner</author> 
  <author>Kurt Cagle</author> 
  <author>James Linn</author> 
  <author>Vaidyanathan Nagarajan</author> 
  <year>2003</year> 
  <price>49.99</price> 
</book>

</bookstore>

在上面的 XML 中,根节点是 <bookstore>。文档中的所有其他节点都被包含在 <bookstore> 中。

根节点 <bookstore> 有四个 <book> 节点。

第一个 <book> 节点有四个节点:<title>, <author>, <year> 以及 <price>,其中每个节点都包含一个文本节点,"Harry Potter", "J K. Rowling", "2005" 以及 "29.99"。

文本总是存储在文本节点中

在 DOM 处理中一个普遍的错误是,认为元素节点包含文本。

不过,元素节点的文本是存储在文本节点中的。(文本节点就是没有被<>符号包含的节点)

在这个例子中:<year>2005</year>,元素节点 <year>,拥有一个值为 "2005" 的文本节点。

"2005" 不是 <year> 元素的值!



XML DOM createTextNode() 方法


定义和用法

createTextNode() 可创建文本节点。

此方法可返回 Text 对象

语法:

createTextNode(data)
参数 描述
data 字符串值,可规定此节点的文本。

返回值

返回新创建的 Text 节点,表示指定的 data 字符串。

实例

在所有的例子中,我们将使用 XML 文件 books.xml,以及 JavaScript 函数 loadXMLDoc()

以下代码片段可向每个 <book> 元素添加一个带有文本节点的元素节点:

xmlDoc=loadXMLDoc("/example/xdom/books.xml");

var x=xmlDoc.getElementsByTagName('book');
var newel,newtext

for (i=0;i<x.length;i++)
  {
  newel=xmlDoc.createElement('edition');
  newtext=xmlDoc.createTextNode('First');
  newel.appendChild(newtext);
  x[i].appendChild(newel);
  }


DOM中元素节点、属性节点、文本节点的理解

每个节点都拥有包含着关于节点某些信息的属性。这些属性是:
nodeName(节点名称) 
nodeValue(节点值) 
nodeType(节点类型) 

元素类型

节点类型(nodeType)

元素(ELEMENT_NODE)

1   

属性(ATTRIBUTE_NODE)

2

文本(TEXT_NODE)

3

注释(COMMENT_NODE)

8

文档(DOCUMENT_NODE)

9


在实际应用中,经常用到的就是元素节点、属性节点和文本节点了,下面我们通过小段代码进行讲解 


1:元素节点
元素节点代码  

<HTML>  
<HEAD>  
<TITLE>空谷悠悠</TITLE>  
</HEAD>  
<BODY>  
    <table>  
        <tr>  
            <td id="john" name="myname">John</td>  
            <td>Doe</td>  
            <td id="jack">Jack</td>  
        </tr>  
    </table>  
    <script>  
        var d = document.getElementById("john");  
        alert(d.nodeType)  
        alert(d.nodeName)  
        alert(d.nodeValue)  
    </script>  
</BODY>  
</HTML>  

分析运行结果,其三个属性的值分别为:

nodeTypeELEMENT_NODE

nodeType值:1

nodeName:元素标记名    //此处为TD

nodeValuenull


2:属性节点

属性节点代码  

<HTML>  
<HEAD>  
<TITLE>空谷悠悠</TITLE>  
</HEAD>  
<BODY>  
    <table>  
        <tr>  
            <td id="john" name="myname">John</td>  
            <td>Doe</td>  
            <td id="jack">Jack</td>  
        </tr>  
    </table>  
    <script>  
        var d = document.getElementById("john").getAttributeNode("name");  
        alert(d.nodeType)  
        alert(d.nodeName)  
        alert(d.nodeValue)  
    </script>  
</BODY>  
</HTML>  

分析运行结果,其三个属性的值分别为:

nodeTypeATTRIBUTE_NODE

nodeType值:2

nodeName:属性名  // name

nodeValue:属性值  //myname


3:文本节点

文本节点代码 

<HTML>  
<HEAD>  
<TITLE>New Document</TITLE>  
</HEAD>  
<BODY>  
 <table>  
  <tr>  
   <td id="john" name="myname">John</td>  
   <td>Doe</td>  
   <td id="jack">Jack</td>  
  </tr>  
 </table>  
 <script>  
  var d = document.getElementsByTagName("td")[0].firstChild  
  alert(d.nodeType)  
  alert(d.nodeName)  
  alert(d.nodeValue)  
 </script>  
</BODY>  
</HTML>  

分析运行结果,其三个属性的值分别为:

nodeTypeTEXT_NODE

nodeType值:3

nodeName#text

nodeValue:文本内容   // John







转自:w3school,http://blog.csdn.net/wsf861559021/article/details/8650676

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值