当前位置: 首页 > 教程 > DOM >

XML DOM获取节点

精华
小牛编辑
88浏览
2023-03-14

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

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

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

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

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

   <Employee category = "Non-Technical"> 
      <FirstName>Max</FirstName> 
      <LastName>Su</LastName> 
      <ContactNo>1334667898</ContactNo> 
      <Email>maxsu@yiibai.com</Email> 
   </Employee>  

   <Employee category = "Management"> 
      <FirstName>Min</FirstName> 
      <LastName>Su</LastName> 
      <ContactNo>1364562350</ContactNo> 
      <Email>minsu@yiibai.com</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 ,如下图所示 -