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