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

1 篇文章 0 订阅
1 篇文章 0 订阅

获取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          设置或返回节点的值,根据其类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值