📄 a beginner's guide to the xml dom.htm
字号:
<p><font size="3">4</font>
</td>
</tr>
</table>
<p align="JUSTIFY"><font size=3>MSXML</font><font face="宋体" lang="ZH-CN" size=3>解析器实现了一些有用的方法,你在调入一个大的文档时可以用这些方法追踪调入过程的状态。这些方法对从</font><font size=3>Internet</font><font face="宋体" lang="ZH-CN" size=3>上异步的调入文档也很有帮助。</font></p>
<p align="JUSTIFY"> <font face="宋体" lang="ZH-CN" size=3>要打开一个</font><font size=3>Internet</font><font face="宋体" lang="ZH-CN" size=3>上的文档,你需要提供绝对</font><font size=3>URL</font><font face="宋体" lang="ZH-CN" size=3>,并且必须加</font><font size=3>http://</font><font face="宋体" lang="ZH-CN" size=3>前缀。下面是一个例子。</font></p>
<p align="JUSTIFY"><b><font size="3">xDoc.async = False</font></b></p>
<p align="JUSTIFY"><b><font size="3">If xDoc.Load("http://www.develop.com/hp/brianr/cds.xml")
Then</font></b></p>
<p align="JUSTIFY"><b><font size=3>	' </font><font face="宋体" lang="ZH-CN" size=3>文档调入成功</font></b></p>
<p align="JUSTIFY"> <b><font face="宋体" lang="ZH-CN" size=3>	</font><font size=3>'
</font><font face="宋体" lang="ZH-CN" size=3>作我们喜欢作的事</font></b></p>
<p align="JUSTIFY"><font size="3"><b>Else</b></font></p>
<p align="JUSTIFY"><b><font size=3>	' </font><font face="宋体" lang="ZH-CN" size=3>文档调入失败</font></b></p>
<p align="JUSTIFY"><font size="3"><b>End If</b></font></p>
<p align="JUSTIFY"><font face="宋体" lang="ZH-CN" size=3>将</font><b><font size=3>Async</font></b><font face="宋体" lang="ZH-CN" size=3>属性设置为</font><b><font size=3>False</font></b><font face="宋体" lang="ZH-CN" size=3>,这样在文档调入完成之前,解析器不会将控制权交给你的代码。如果把</font><b><font size=3>Async</font></b><font face="宋体" lang="ZH-CN" size=3>保存为</font><b><font size=3>True</font></b><font face="宋体" lang="ZH-CN" size=3>,你在访问文档时必须检查</font><b><font size=3>ReadyState</font></b><font face="宋体" lang="ZH-CN" size=3>属性或者利用</font><b><font size=3>DOMDocument</font></b><font face="宋体" lang="ZH-CN" size=3>的事件在文档可以访问时提示你的代码。</font></p>
<p align="JUSTIFY"><font size=3> </font><font face="宋体" lang="ZH-CN" size=3><a name="5"></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></p>
<p align="JUSTIFY"> <font face="宋体" lang="ZH-CN" size=3>默认的解析器会验证你的文档是否符合某个</font><font size=3>DTD
</font><font face="宋体" lang="ZH-CN" size=3>或者</font><font size=3> schema</font><font face="宋体" lang="ZH-CN" size=3>,你可以不让解析器执行验证,在执行</font><b><font size=3>Load</font></b><font face="宋体" lang="ZH-CN" size=3>方法之前,将</font><b><font size=3>DOMDocument</font></b><font face="宋体" lang="ZH-CN" size=3>的属性</font><b><font size=3>ValidateOnParse</font></b><font face="宋体" lang="ZH-CN" size=3>为</font><b><font size=3>False</font></b><font face="宋体" lang="ZH-CN" size=3>。</font></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\cds.xml")
Then</font></b></p>
<p align="JUSTIFY"><b><font size=3> ' </font><font face="宋体" lang="ZH-CN" size=3>文档调入成功</font></b></p>
<p align="JUSTIFY"><b><font size=3>' </font><font face="宋体" lang="ZH-CN" size=3>作我们喜欢作的事</font></b></p>
<p align="JUSTIFY"><font size="3"><b>Else</b></font></p>
<p align="JUSTIFY"><b><font size=3>' </font><font face="宋体" lang="ZH-CN" size=3>文档调入失败</font></b></p>
<p align="JUSTIFY"><font size="3"><b>End If</b></font></p>
<p align="JUSTIFY"><font size=3> </font><font face="宋体" lang="ZH-CN" size=3>事先关闭验证功能不是个好主意,它会带来许多问题,至少它会是你提供错误格式的数据给你的用户。</font></p>
<p align="JUSTIFY"><font size=3> </font><font face="宋体" lang="ZH-CN" size=3>你可以通过访问</font><b><font size=3>ParseError</font></b><font face="宋体" lang="ZH-CN" size=3>对象来从解析器那儿获得有关错误类型的信息。创建一个</font><b><font size=3>IXMLDOMParseError</font></b><font face="宋体" lang="ZH-CN" size=3>界面的引用,然后把它指向文档自身的</font><b><font size=3>ParseError</font></b><font face="宋体" lang="ZH-CN" size=3>对象。</font><b><font size=3>IXMLDOMParseError</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>ParseError</font></b><font face="宋体" lang="ZH-CN" size=3>对象中所有错误信息。</font></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">If xDoc.Load("C:\My Documents\cds.xml")
Then</font></b></p>
<p align="JUSTIFY"><b><font size=3> ' </font><font face="宋体" lang="ZH-CN" size=3>文档调入成功</font></b></p>
<p align="JUSTIFY"><b><font size=3>' </font><font face="宋体" lang="ZH-CN" size=3>作我们喜欢作的事</font></b></p>
<p align="JUSTIFY"><font size="3"><b>Else</b></font></p>
<p align="JUSTIFY"><b><font size=3>' </font><font face="宋体" lang="ZH-CN" size=3>文档调入失败</font></b></p>
<p align="JUSTIFY"><font size="3"><b>Dim strErrText As String</b></font></p>
<p align="JUSTIFY"><font size="3"><b>Dim xPE As MSXML.IXMLDOMParseError</b></font></p>
<p align="JUSTIFY"><b><font size=3> ' </font><font face="宋体" lang="ZH-CN" size=3>获得</font><font size=3>parseError</font><font face="宋体" lang="ZH-CN" size=3>对象</font></b></p>
<p align="JUSTIFY"><font size="3"><b>Set xPE = xDoc.parseError</b></font></p>
<p align="JUSTIFY"><font size="3"><b> With xPE</b></font></p>
<p align="JUSTIFY"><b><font size=3> strErrText = "</font><font face="宋体" lang="ZH-CN" size=3>你的</font><font size=3>XML
Document </font><font face="宋体" lang="ZH-CN" size=3>不能调入</font><font size=3>"
& _</font></b></p>
<p align="JUSTIFY"> <b><font size=3> "</font><font face="宋体" lang="ZH-CN" size=3>原因是</font><font size=3>."
& vbCrLf & _</font></b></p>
<p align="JUSTIFY"> <b><font size=3> "</font><font face="宋体" lang="ZH-CN" size=3>错误</font><font size=3>
#: " & .errorCode & ": " & xPE.reason & _</font></b></p>
<p align="JUSTIFY"> <font size="3"><b>"Line #: " & .Line & vbCrLf
& _</b></font></p>
<p align="JUSTIFY"> <font size="3"><b>"Line Position: " & .linepos &
vbCrLf & _</b></font></p>
<p align="JUSTIFY"> <font size="3"><b>"Position In File: " & .filepos
& vbCrLf & _</b></font></p>
<p align="JUSTIFY"> <font size="3"><b>"Source Text: " & .srcText &
vbCrLf & _</b></font></p>
<p align="JUSTIFY"> <font size="3"><b>"Document URL: " & .url</b></font></p>
<p align="JUSTIFY"><font size="3"><b> End With</b></font></p>
<p align="JUSTIFY"></p>
<p align="JUSTIFY"><font size="3"><b> MsgBox strErrText, vbExclamation</b></font></p>
<p align="JUSTIFY"><font size="3"><b>End If</b></font></p>
<p align="JUSTIFY"></p>
<p align="JUSTIFY"><font size="3"><b>Set xPE = Nothing</b></font></p>
<p align="JUSTIFY"><font face="宋体" lang="ZH-CN" size=3>你可以利用</font><b><font size=3>parseError</font></b><font face="宋体" lang="ZH-CN" size=3>对象来向你的用户报告错误信息,或者把它写入你个</font><font size=3>Log</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="6"></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><b><font size=3>IXMLDOMNode</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>MSXML</font><font face="宋体" lang="ZH-CN" size=3>支持的</font><font size=3>13</font><font face="宋体" lang="ZH-CN" size=3>种节点元素类型,下面是最常用的几个。</font></p>
<p align="LEFT">
<table BORDER cellspacing=1 cellpadding=7 width=336>
<tr>
<td width="52%" valign="TOP" height=30> <b></b>
<p align="JUSTIFY"><font size=3><b>DOM</b></font><font face="宋体" lang="ZH-CN" size=3>节点类型</font>
</td>
<td width="48%" valign="TOP" height=30>
<p align="JUSTIFY"><font face="宋体" lang="ZH-CN" size="3">举例</font>
</td>
</tr>
<tr>
<td width="52%" valign="TOP" height=39>
<p align="JUSTIFY"><b><font size="3">NODE_ELEMENT</font></b>
</td>
<td width="48%" valign="TOP" height=39>
<p align="JUSTIFY"><b><font size="3"><artist type="band">The
Offspring</artist></font></b>
</td>
</tr>
<tr>
<td width="52%" valign="TOP" height=42>
<p align="JUSTIFY"><b><font size="3">NODE_ATTRIBUTE</font></b>
</td>
<td width="48%" valign="TOP" height=42>
<p align="JUSTIFY"><b><font size="3">type="band">The Offspring</font></b>
</td>
</tr>
<tr>
<td width="52%" valign="TOP" height=31>
<p align="JUSTIFY"><b><font size="3">NODE_TEXT</font></b>
</td>
<td width="48%" valign="TOP" height=31>
<p align="JUSTIFY"><b><font size="3">The Offspring</font></b>
</td>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -