XML DOM获取节点

在本章中,将学习如何获取XML DOM对象的节点值。 XML文档具有称为节点的信息单元的层次结构。 Node对象有一个属性 - nodeValue,它返回元素的值。

在以下部分中,将讨论学习 -

  • 获取元素的节点值
  • 获取节点的属性值

以下所有示例中使用的node.xml如下所示 -

<Company> 
   <Employee category = Technical id = firstelement> 
      <FirstName>Susen</FirstName> 
      <LastName>Su</LastName> 
      <ContactNo>1584567890</ContactNo> 
      <Email>susen@jb51.cc</Email> 
   </Employee>  

   <Employee category = Non-Technical> 
      <FirstName>Max</FirstName> 
      <LastName>Su</LastName> 
      <ContactNo>1334667898</ContactNo> 
      <Email>maxsu@jb51.cc</Email> 
   </Employee>  

   <Employee category = Management> 
      <FirstName>Min</FirstName> 
      <LastName>Su</LastName> 
      <ContactNo>1364562350</ContactNo> 
      <Email>minsu@jb51.cc</Email> 
   </Employee> 
</Company>

1. 获取节点值

使用getElementsByTagName()方法以文档顺序返回具有给定标记名称的所有元素的NodeList

示例
以下示例(getnode example.html)将XML文档(node.xml)解析为XML DOM对象,并提取子节点Firstname的节点值(索引为0) -

<!DOCTYPE html>
<html>
   <body>
      <script>
         if (window.XMLHttpRequest) {
            xmlhttp = new XMLHttpRequest();
         } else{
            xmlhttp = new ActiveXObject(Microsoft.XMLHTTP);
         }
         xmlhttp.open(GET,/node.xml,false);
         xmlhttp.send();
         xmlDoc = xmlhttp.responseXML;

         x = xmlDoc.getElementsByTagName('FirstName')[0]
         y = x.childNodes[0];
         document.write(y.nodeValue);
      </script>
   </body>
</html>

执行

将此文件保存为:getnode_example.html 并放在服务器WEB目录中(此文件和node.xml应位于服务器中的同一路径上)。 在输出中得到节点值为:Susen ,如下图所示 -

2. 获取属性值

属性是XML节点元素的一部分。 节点元素可以具有多个唯一属性。 属性提供有关XML节点元素的更多信息。 更确切地说,它们定义节点元素的属性。 XML属性始终是名称-值对。 属性的值称为属性节点。

getAttribute()方法按元素名称检索属性值。

示例

以下示例(get_attribute.html )将XML文档(node.xml)解析为XML DOM对象,并提取Employee中的category属性的值(索引是2) -

<!DOCTYPE html>
<html>
   <body>
      <script>
         if (window.XMLHttpRequest) {
            xmlhttp = new XMLHttpRequest();
         } else {
            xmlhttp = new ActiveXObject(Microsoft.XMLHTTP);
         }
         xmlhttp.open(GET,/node.xml,false);
         xmlhttp.send();
         xmlDoc = xmlhttp.responseXML;

         x = xmlDoc.getElementsByTagName('Employee')[2];
         document.write(x.getAttribute('category'));
      </script>
   </body>
</html>

执行

将此文件保存为:getnode_example.html 并放在服务器WEB目录中(此文件和node.xml应位于服务器中的同一路径上)。 在输出中得到节点属性值为:Management ,如下图所示 -