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

来源:互联网 发布:方太跟帅康哪个好 知乎 编辑:程序博客网 时间:2024/06/04 17:42

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

0 0
原创粉丝点击