?? 0802-0403.htm
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0071)http://162.105.170.55/ASPs/GetLearningArticleTemp.asp?section=0802-0403 -->
<HTML><HEAD><TITLE>XML中國論壇 - 初學進階 - 8.2.4.3 遍歷XML文檔</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>TABLE {
FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"
}
.pt9 {
FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"
}
.pt10 {
FONT-WEIGHT: 700; FONT-SIZE: 10pt; LINE-HEIGHT: 18pt; FONT-FAMILY: "宋體"
}
.TempOutline {
FONT-SIZE: 9pt; MARGIN-LEFT: 15pt; COLOR: #666666; TEXT-INDENT: -28pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
.TempOutline1 {
FONT-SIZE: 9pt; MARGIN-LEFT: 24pt; COLOR: #666666; TEXT-INDENT: -36pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
.Outline {
FONT-SIZE: 9pt; MARGIN-LEFT: 15pt; TEXT-INDENT: -28pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
.Outline1 {
FONT-SIZE: 9pt; MARGIN-LEFT: 24pt; TEXT-INDENT: -36pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
.Outline11 {
FONT-SIZE: 9pt; MARGIN-LEFT: 38pt; TEXT-INDENT: -50pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
.passage0 {
FONT-SIZE: 9pt; MARGIN-LEFT: 15pt; TEXT-INDENT: -28pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
.passage1 {
FONT-SIZE: 9pt; MARGIN-LEFT: 24pt; TEXT-INDENT: -36pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
.passage11 {
FONT-SIZE: 9pt; MARGIN-LEFT: 38pt; TEXT-INDENT: -50pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
.passage111 {
FONT-SIZE: 9pt; MARGIN-LEFT: 51pt; TEXT-INDENT: -64pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
</STYLE>
<META content="Microsoft FrontPage 5.0" name=GENERATOR></HEAD>
<BODY vLink=#000000 aLink=#000000 link=#000000 leftMargin=0 topMargin=0
onload=""><!-- 以下為主體內容 -->
<div align="center">
<center>
<TABLE width="100%" border=0 style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" cellspacing="0">
<TBODY>
<TR vAlign=top>
<TD width=39 rowSpan=2></TD>
<TD vAlign=center width="504">
<p align="center"><IMG height=33
src="image/title_learner.gif" width=226></TD>
<TD width=43 rowSpan=2></TD>
</TR>
<TR vAlign=top>
<TD width="504" ><!-- 正文內容 -->
<DIV class=pt10><B>8.2.4.3 遍歷XML文檔</B></DIV>
<DIV></DIV><BR>
<DIV class=pt9>
<P>現在,我們已經可以通過DOM來創建XML文檔對象,并加載XML文檔了。對于已經加載的文檔,我們要從文檔中獲取所需要的內容,這就要求能夠通過DOM樹來訪問樹中的任何一個節點,也就是對DOM樹的遍歷。下面我們依舊以client.xml為例,通過幾個實例來說明如何遍歷DOM樹中的節點。</P>
<P>首先,我們要獲取XML文檔的根元素節點,用VBScript語言描述這個操作如下:</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD width="100%">root =
myDocument.documentElement</TD></TR></TBODY></TABLE></CENTER></DIV>
<P>該語句的實際含義如下圖黃色箭頭所示。</P><FONT face=宋體 size=3>
<P align=center><IMG height=261
src="image/TU000000-0802-0403-01.gif" width=471></FONT></P>
<P>在得到了文檔的根元素節點之后,我們又將如何訪問其他元素呢?以文檔中的第二個person元素為例,對該元素節點以及其子節點的訪問可以通過下面的方式來實現:</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD width="100%">personNode = root.childNodes.item(1)<BR>nameNode =
personNode.childNodes.item(0)<BR>textNode =
nameNode.childNodes.item(0)<BR>theName =
textNode.nodeValue</TD></TR></TBODY></TABLE></CENTER></DIV>
<P>上述訪問語句執行后,theName的值是"李四"。下圖黃色箭頭給出了這一訪問過程的示意:</P><FONT face=宋體 size=3>
<P align=center><IMG height=308
src="image/TU000000-0802-0403-02.gif" width=471></FONT></P>
<P>在上面的代碼中,root是文檔的根元素節點addressbook節點,personNode和nameNode都是元素類型的節點,textNode是TEXT類型的節點,theName是一個字符串。</P>
<P>childNodes是NodeList類型的屬性,item是NodeList接口中Node類型的屬性,通過item可以訪問NodeList節點集合中的任意節點(這兒有一點需要注意,當我們要訪問根元素節點addressbook的第二個person子節點personNode時,我們用的索引參數是"1",這是因為item中的索引參數是從0開始的,如果我們要訪問節點集合中的第一個節點,則應該用item(0)來表示)。</P>
<P>在DOM規范中,要訪問元素節點的文本內容,需要先得到元素節點的TEXT子節點,再通過TEXT節點的屬性獲取文本內容。微軟在實現DOM接口時對DOM進行了部分擴展,可以通過元素類型節點的text屬性直接獲得元素中的文本內容。具體實用說明可以參考微軟msdn中的幫助。</P>
<P>上面的例子給出了如何訪問DOM樹中的元素節點,對于DOM樹中的屬性節點,訪問方法略有不同,可以通過下面的語句來實現:</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD width="100%">attr =
node.attributes.getNamedItem("sex")<BR>attrContent =
attr.nodeValue</TD></TR></TBODY></TABLE></CENTER></DIV>
<P>上述訪問語句執行后,attrContent的值是"male"。下圖用黃色箭頭標出了這一訪問的過程。</P><FONT face=宋體
size=3>
<P align=center><IMG height=261
src="image/TU000000-0802-0403-03.gif" width=502></FONT></P>
<P>在上面的代碼中,attr是屬性類型的節點,attributes是NamedNodeMap類型的屬性,getNamedItem是NamedNodeMap接口中的方法。屬性的內容可以通過屬性節點的nodeValue來獲得。</P></DIV>
<P></P>
<P></P></TD></TR></TBODY></TABLE>
</center>
</div>
<P></P>
<P>
<P></P></BODY></HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -