微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

获取xml数据库节点数据应用

获取xml数据库节点数据应用

(1)XML数据库文件data.xml

<?xml version="1.0" encoding="UTF-8"standalone="no"?>
<users>
      <user id="001">
             <uid>AAA</uid>
             <pwd>aaa</pwd>
             <intro>ABC001</intro>
      </user>
      <user id="002">
             <uid>BBB</uid>
             <pwd>bbb</pwd>
             <intro> ABC002</intro>
      </user>
      <user id="003">
              <uid>CCC</uid>
             <pwd>ccc</pwd>
             <intro> ABC003</intro>
      </user>
</users>



(2)DOC文档树结构分析

如图1所示,

图1 XML数据库节点结构

图1中,users根节点的子节点为:0、1、2、3、4、5、6;共7个节点。其中,子节点0、2、4、6为#text节点(可能是文本信息,或者包含孙子节点),子节点1、3、5为元素节点ELEMENT_MODE。

子节点user同样包含7个子节点:1_0、1_1、1_2、1_3、1_4、1_5、1_6;其中,子节点1_0、1_2、1_4、1_6为#text节点(可能是文本信息,或者包含孙子节点),子节点1_1、1_3、1_5为元素节点ELEMENT_MODE。


(3)获取数据节点的jsp应用代码

<pre name="code" class="html"><%@ page contentType="text/html;charset=UTF-8"%>
<%@ page import="java.io.*"%>
<%@ page import="org.w3c.dom.*"%>
<%@ page import="org.xml.sax.*"%>
<%@ page import="javax.xml.parsers.*"%>
<html>
  <head>
     <title>XML_DATA</title>
  </head>
  <body>
  <%
     Document doc;
     DocumentBuilderFactorydbf=DocumentBuilderFactory.newInstance();
     dbf.setValidating(false);
     DocumentBuilderdb= dbf.newDocumentBuilder();
     String dataPath=application.getRealPath("/data/data.xml");
     doc=db.parse(newFile(dataPath));
     Nodedocument_node=(Node)doc;
     Nodeusers_node=document_node.getFirstChild(); //获取根节点users
     //获取根节点users的所有子节点(不包含孙子节点),
     //并且以链表的形式存放到allChild变量中。
     NodeListallChild=users_node.getChildNodes();
     intnode_count=0;
     if(allChild!=null)
     {
           node_count=allChild.getLength();
      }
    %>
    <palign="center">    UserManagement</p>
    <center>
    <tableborder="1" cellpadding="0" cellspacing="0"style="border-collapse: collapse" bordercolor="#111111"width="400" id="AutoNumber1">
       <tr>
            <tdwidth="33%"><b>User_ID</b></td>
            <tdwidth="33%"><b>PWD</b></td>
            <tdwidth="34%"><b>introduction</b></td>
       </tr>
       <%
         for(int j=0;j<node_count;j++)
         {
               if(allChild.item(j).getNodeType()==Node.ELEMENT_NODE)
               {//筛选根节点的子节点中的元素子节点
       %>
       <tr>
           <td width="33%">
           <!—获取根节点的第j个子节点(此处为筛选的元素子节点)的:
             第一个子节点1_0:getFirstChild()
             获取一个子节点紧跟的下一个同级节点1_1:getNextSibling()
             获取子节点1_1的第一个子节点1_1_0:getFirstChild()
             上述获取的子节点1_1_0为#text,且不包含下一级子节点,
             获取其文本值:getNodeValue()
            -->
           <%=allChild.item(j).getFirstChild().getNextSibling().getFirstChild().getNodeValue()%>
           </td>
           <td width="33%">
           <%=allChild.item(j).getFirstChild().getNextSibling().getNextSibling().getNextSibling().getFirstChild().getNodeValue()%>
           </td>
           <td width="33%">
           <%=allChild.item(j).getLastChild().getPrevIoUsSibling().getFirstChild().getNodeValue()%>
           </td>
       </tr>
       <% }
       }
       %>
     </table>
     <ahref="add.html">add new data</a>
     </center>
    </body>
</html>


 

(4)Node对象的属性

childNodes 返回节点的子节点列表(不包含孙子节点)

firstChild 返回节点的首个子节点

lastChild 返回子节点的最后一个子节点

nextSibling 返回节点之后紧跟的同级节点

prevIoUsSibling 返回节点之前紧跟的同级节点

text 返回节点及其后的文本(IE独有的属性

nodeName 返回节点的名称,根据其属性

nodeType 返回节点的类型

nodeValue 设置或返回节点的值,根据其类型。

原文地址:https://www.jb51.cc/xml/295641.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。