?? a beginner's guide to the xml dom.htm
字號:
</tr>
<tr>
<td width="52%" valign="TOP" height=48>
<p align="JUSTIFY"><b><font size="3">NODE_PROCESSING_INSTRUCTION</font></b>
</td>
<td width="48%" valign="TOP" height=48>
<p align="JUSTIFY"><b><font size="3"><?xml version="1.0"?></font></b>
</td>
</tr>
<tr>
<td width="52%" valign="TOP" height=64>
<p align="JUSTIFY"><b><font size="3">NODE_DOCUMENT_TYPE</font></b>
</td>
<td width="48%" valign="TOP" height=64>
<p align="JUSTIFY"><b><font size="3"><!DOCTYPE compactdiscs SYSTEM
"cds.dtd"></font></b>
</td>
</tr>
</table>
<p></p>
<p align="JUSTIFY"><font face="宋體" lang="ZH-CN" size=3>你通過</font><b><font size=3>IXMLDOMNode</font></b><font face="宋體" lang="ZH-CN" size=3>界面實現的兩個屬性來訪問節點的類型。</font><b><font size=3>NodeType</font></b><font face="宋體" lang="ZH-CN" size=3>屬性列舉了</font><b><font size=3>DOMNodeType</font></b><font face="宋體" lang="ZH-CN" size=3>所有項目</font><font size=3>(</font><font face="宋體" lang="ZH-CN" size=3>一些項目列舉在上面的表格上</font><font size=3>)</font><font face="宋體" lang="ZH-CN" size=3>。另外,你可以用</font><b><font size=3>NodeTypeString</font></b><font face="宋體" lang="ZH-CN" size=3>屬性來獲得表示節點類型的字符串。</font></p>
<p align="JUSTIFY"> <font face="宋體" lang="ZH-CN" size=3>一旦你有了文檔的</font><font size=3>DOM</font><font face="宋體" lang="ZH-CN" size=3>引用,你就可以遍歷節點的層次。通過文檔引用,你可以訪問</font><b><font size=3>ChildNodes</font></b><font face="宋體" lang="ZH-CN" size=3>屬性,它給出了一個自上而下的包含所有節點的目錄。</font><b><font size=3>ChildNodes</font></b><font face="宋體" lang="ZH-CN" size=3>屬性實現了</font><b><font size=3>IXMLDOMNodeList</font></b><font face="宋體" lang="ZH-CN" size=3>,它支持</font><font size=3>Visual
Basic</font><font face="宋體" lang="ZH-CN" size=3>的</font><font size=3>For/Each</font><font face="宋體" lang="ZH-CN" size=3>結構,所以你可以列舉出</font><b><font size=3>ChildNodes</font></b><font face="宋體" lang="ZH-CN" size=3>中的所有節點。另外,</font><b><font size=3>ChildNodes</font></b><font face="宋體" lang="ZH-CN" size=3>屬性還實現了</font><b><font size=3>Level</font></b><font face="宋體" lang="ZH-CN" size=3>屬性,它可以返回所有子節點的數目。</font></p>
<p align="JUSTIFY"> <font face="宋體" lang="ZH-CN" size=3>不只是文檔對象有</font><b><font size=3>ChildNodes</font></b><font face="宋體" lang="ZH-CN" size=3>屬性,每一個節點都有</font><b><font size=3>ChildNodes</font></b><font face="宋體" lang="ZH-CN" size=3>屬性。因為如此,</font><b><font size=3>ChildNodes</font></b><font face="宋體" lang="ZH-CN" size=3>屬性和</font><b><font size=3>IXMLDOMNode's
HasChildNodes</font></b><font face="宋體" lang="ZH-CN" size=3>屬性配合,使你非常方便的遍歷文檔,訪問元素,屬性,值。</font></p>
<p align="JUSTIFY"> <font face="宋體" lang="ZH-CN" size=3>值得一提的是,元素和元素值之間是父子關系。例如在</font><font size=3>
CDs XML</font><font face="宋體" lang="ZH-CN" size=3>文檔中,元素</font><b><font size=3><title></font></b><font face="宋體" lang="ZH-CN" size=3>表示歌曲的名字,要知道</font><b><font size=3><title></font></b><font face="宋體" lang="ZH-CN" size=3>的值,你需要訪問節點的屬性</font><b><font size=3>NODE_TEXT</font></b><font face="宋體" lang="ZH-CN" size=3>。如果你發現一個節點有你感興趣的數據,你可以訪問它的屬性,也可以通過</font><b><font size=3>ParentNode</font></b><font face="宋體" lang="ZH-CN" size=3>屬性來訪問它們的父節點。</font></p>
<p align="JUSTIFY"></p>
<p align="JUSTIFY"><font face="宋體" lang="ZH-CN" size=3><a name="7"></a>如何遍歷</font><font size=3>XML</font><font face="宋體" lang="ZH-CN" size=3>文檔:</font></p>
<p align="JUSTIFY"> <font face="宋體" lang="ZH-CN" size=3>你能夠遍歷文檔的節點是利用文檔對象</font><font size=3>,</font><font face="宋體" lang="ZH-CN" size=3>因為</font><font size=3>XML</font><font face="宋體" lang="ZH-CN" size=3>本身就是層次結構</font><font size=3>,</font><font face="宋體" lang="ZH-CN" size=3>所以很容易編寫遞歸代碼來訪問整個文檔。</font></p>
<b></b>
<p align="JUSTIFY"><font size=3><b>LoadDocument</b></font><font face="宋體" lang="ZH-CN" size=3>程序打開</font><font size=3>XML</font><font face="宋體" lang="ZH-CN" size=3>文檔,然后調用另一個程序</font><b><font size=3>DisplayNode</font></b><font face="宋體" lang="ZH-CN" size=3>,它用來顯示文檔的結構。</font><b><font size=3>LoadDocument</font></b><font face="宋體" lang="ZH-CN" size=3>傳遞給正在打開的</font><font size=3>XML</font><font face="宋體" lang="ZH-CN" size=3>文檔的</font><b><font size=3>ChildNodes</font></b><font face="宋體" lang="ZH-CN" size=3>屬性一個引用作為它的參數,同時傳遞一個整數用來標示開始顯示的層次級別。代碼利用參數來格式化在</font><font size=3>Visual
Basic</font><font face="宋體" lang="ZH-CN" size=3>文檔結構顯示窗口中的文本。</font></p>
<b></b>
<p align="JUSTIFY"><font size=3><b>DisplayNode</b></font><font face="宋體" lang="ZH-CN" size=3>屬性的函數會遍歷文檔尋找需要的</font><b><font size=3>NODE_TEXT</font></b><font face="宋體" lang="ZH-CN" size=3>節點類型串,一旦代碼找到一個</font><b><font size=3>NODE_TEXT</font></b><font face="宋體" lang="ZH-CN" size=3>的節點,它會利用</font><b><font size=3>NodeValue</font></b><font face="宋體" lang="ZH-CN" size=3>屬性來獲得相應的文本串。另外,當前節點的</font><b><font size=3>ParentNode</font></b><font face="宋體" lang="ZH-CN" size=3>屬性指向一個元素類型的節點。元素節點實現了一個</font><b><font size=3>NodeName</font></b><font face="宋體" lang="ZH-CN" size=3>屬性,</font></p>
<b></b>
<p align="JUSTIFY"><font size=3><b>NodeName</b></font><font face="宋體" lang="ZH-CN" size=3>和</font><b><font size=3>NodeValue</font></b><font face="宋體" lang="ZH-CN" size=3>屬性會被顯示。</font></p>
<p align="JUSTIFY"> <font face="宋體" lang="ZH-CN" size=3>如果一個節點還有子節點,通過檢測</font><b><font size=3>HasChildNodes</font></b><font face="宋體" lang="ZH-CN" size=3>屬性確認,</font><b><font size=3>DisplayNode</font></b><font face="宋體" lang="ZH-CN" size=3>就會調用自己知道遍歷文檔的全部。</font></p>
<b></b>
<p align="JUSTIFY"><font size=3><b>下面這個DisplayNode</b></font><font face="宋體" lang="ZH-CN" size=3>程序用</font><b><font size=3>Debug.Print</font></b><font face="宋體" lang="ZH-CN" size=3>向</font><font size=3>Visual
Basic</font><font face="宋體" lang="ZH-CN" size=3>窗口寫入相關信息。</font></p>
<p align="JUSTIFY"><b><font size="3">Public Sub LoadDocument()</font></b></p>
<p align="JUSTIFY"><b><font size="3">Dim xDoc As MSXML.DOMDocument</font></b></p>
<p align="JUSTIFY"><b><font size="3">Set xDoc = New MSXML.DOMDocument</font></b></p>
<p align="JUSTIFY"><b><font size="3">xDoc.validateOnParse = False</font></b></p>
<p align="JUSTIFY"><b><font size="3">If xDoc.Load("C:\My Documents\sample.xml")
Then</font></b></p>
<p align="JUSTIFY"><b><font size="3">' The document loaded successfully.</font></b></p>
<p align="JUSTIFY"><b><font size="3">' Now do something intersting.</font></b></p>
<p align="JUSTIFY"><b><font size="3">DisplayNode xDoc.childNodes, 0</font></b></p>
<p align="JUSTIFY"><b><font size="3">Else</font></b></p>
<p align="JUSTIFY"><b><font size="3">' The document failed to load.</font></b></p>
<p align="JUSTIFY"><b><font size="3">' See the previous listing for error
information.</font></b></p>
<p align="JUSTIFY"><b><font size="3">End If</font></b></p>
<p align="JUSTIFY"><b><font size="3">End Sub</font></b></p>
<p align="JUSTIFY"></p>
<p align="JUSTIFY"><b><font size="3">Public Sub DisplayNode(ByRef Nodes
As MSXML.IXMLDOMNodeList, _</font></b></p>
<p align="JUSTIFY"><b><font size="3">ByVal Indent As Integer)</font></b></p>
<p align="JUSTIFY"></p>
<p align="JUSTIFY"><b><font size="3">Dim xNode As MSXML.IXMLDOMNode</font></b></p>
<p align="JUSTIFY"><b><font size="3">Indent = Indent + 2</font></b></p>
<p align="JUSTIFY"></p>
<p align="JUSTIFY"><b><font size="3">For Each xNode In Nodes</font></b></p>
<p align="JUSTIFY"><b><font size="3">If xNode.nodeType = NODE_TEXT Then</font></b></p>
<p align="JUSTIFY"><b><font size="3">Debug.Print Space$(Indent) & xNode.parentNode.nodeName
& _</font></b></p>
<p align="JUSTIFY"><b><font size="3">":" & xNode.nodeValue</font></b></p>
<p align="JUSTIFY"><b><font size="3">End If</font></b></p>
<p align="JUSTIFY"></p>
<p align="JUSTIFY"><b><font size="3">If xNode.hasChildNodes Then</font></b></p>
<p align="JUSTIFY"><b><font size="3">DisplayNode xNode.childNodes, Indent</font></b></p>
<p align="JUSTIFY"><b><font size="3">End If</font></b></p>
<p align="JUSTIFY"><b><font size="3">Next xNode</font></b></p>
<p align="JUSTIFY"><b><font size="3">End Sub</font></b></p>
<p align="JUSTIFY"></p>
<b></b>
<p align="JUSTIFY"><font size=3><b>DisplayNode</b></font><font face="宋體" lang="ZH-CN" size=3>用</font><b><font size=3>HasChildNodes</font></b><font face="宋體" lang="ZH-CN" size=3>屬性來確認是否再次調用自己,你也可以用節點的</font><b><font size=3>Level</font></b><font face="宋體" lang="ZH-CN" size=3>屬性,如果大于</font><font size=3>0</font><font face="宋體" lang="ZH-CN" size=3>,則有子節點。</font></p>
<p align="JUSTIFY"></p>
<p align="JUSTIFY"><font face="宋體" lang="ZH-CN" size="3"><a name="8"></a>下一步該干什么:</font></p>
<p align="JUSTIFY"><font face="宋體" lang="ZH-CN" size=3>這僅僅是個開始,你現在可以更深的了解</font><font size=3>XML</font><font face="宋體" lang="ZH-CN" size=3>和</font><font size=3>Microsoft
</font><font face="宋體" lang="ZH-CN" size=3>解析器</font><font size=3>(Msxml.dll)</font><font face="宋體" lang="ZH-CN" size=3>。你可以作一些有趣的事例如改變某個節點的值,搜索文檔,建立你自己的文檔等等。訪問</font><font size=3>
<b>MSDN</b> <b>Online XML Developer Center</b></font><font face="宋體" lang="ZH-CN" size=3>以獲得更多的例子,文章和下載。</font>
<br>
</p>
<hr size="1">
<div align="center">
<p><br>
<a href="../resource.htm" tppabs="http://www.xml.org.cn:8188/resource/resource.htm" target="_parent"><font size="-1"><span class="normal9">返回學習&研究</span></font></a><span class="normal9"><font size="-1"><a href="../resource.htm" tppabs="http://www.xml.org.cn:8188/resource/resource.htm">
</a></font></span></p>
</div>
</td>
</tr>
<tr align="center">
<td><font color="#FF0033" size="-1"><span class="normal9">本站點所刊文章版權,均歸本站點所有。署名作者擁有其著作權。<br>
未經</span></font><span class="normal9"><font color="#FF0033"><a href="mailto:xmlteam@egroups.com"><font color="#6666FF" size="-1">允許</font></a></font><font color="#FF0033" size="-1">,不得隨意轉載,違者必究!!</font></span></td>
</tr>
<tr>
<td> </td>
</tr>
</table>
<p ALIGN="JUSTIFY"> </p>
</body>
</html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -