100165637.htm
来自「C#高级编程(第三版),顶死你们。。 。up」· HTM 代码 · 共 151 行 · 第 1/2 页
HTM
151 行
<p class="2" style="MARGIN-TOP: 0cm; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US"> <price>11.99</price></span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </book></span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <book genre="philosophy" publicationdate="1991" ISBN="1-861001-57-6"></span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <title>The Gorgias</title></span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <author></span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <name>Plato</name></span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </author></span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <price>9.99</price></span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </book></span></p>
<p class="2" style="MARGIN-TOP: 0cm; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US"></bookstore></span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">上面的一些代码使用</span><span lang="EN-US">MSXML 4.0</span><span style="FONT-FAMILY: 宋体">从</span><span lang="EN-US">books.xml</span><span style="FONT-FAMILY: 宋体">中加载一个带有</span><span lang="EN-US">ISDN</span><span style="FONT-FAMILY: 宋体">的列表框。完整的代码可以从下载的</span><span lang="EN-US">MSXML_Sample</span><span style="FONT-FAMILY: 宋体">文件夹中找到,可以把它们复制到</span><span lang="EN-US">Visual Studio IDE</span><span style="FONT-FAMILY: 宋体">中,或者从头开始新建一个</span><span lang="EN-US">Windows</span><span style="FONT-FAMILY: 宋体">窗体,该窗体包含一个列表框和一个按钮,它们都使用</span><span lang="EN-US">listBox1</span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US">button1</span><span style="FONT-FAMILY: 宋体">的默认名称,</span><span lang="EN-US">button1</span><span style="FONT-FAMILY: 宋体">的</span><span lang="EN-US">Text</span><span style="FONT-FAMILY: 宋体">属性设置为</span><span lang="EN-US">Load XML</span><span style="FONT-FAMILY: 宋体">。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">注意,因为</span><span lang="EN-US">MSXML 4</span><span style="FONT-FAMILY: 宋体">是一个基于</span><span lang="EN-US">COM</span><span style="FONT-FAMILY: 宋体">的组件,所以需要创建交互操作的程序集。最简单的方式是在</span><span lang="EN-US">Visual Studio IDE</span><span style="FONT-FAMILY: 宋体">的</span><span lang="EN-US">Project</span><span style="FONT-FAMILY: 宋体">菜单中选择</span><span lang="EN-US">Add Reference</span><span style="FONT-FAMILY: 宋体">,进入</span><span lang="EN-US">COM</span><span style="FONT-FAMILY: 宋体">选项卡,选择</span><span lang="EN-US">Microsoft XML, v4.0 (</span><span style="FONT-FAMILY: 宋体">或</span><span lang="EN-US">v3.0, v2.6).</span><span style="FONT-FAMILY: 宋体">。可以把</span><span lang="EN-US">MSXML2</span><span style="FONT-FAMILY: 宋体">看做在</span><span lang="EN-US">Solution Explorer</span><span style="FONT-FAMILY: 宋体">中添加的命名空间。为什么是</span><span lang="EN-US">MSXML2</span><span style="FONT-FAMILY: 宋体">?在导入</span><span lang="EN-US">COM</span><span style="FONT-FAMILY: 宋体">组件时,为新程序集提供的命名空间是该</span><span lang="EN-US">COM</span><span style="FONT-FAMILY: 宋体">组件的类型库名。在本例中,它就是</span><span lang="EN-US">MSXML2</span><span style="FONT-FAMILY: 宋体">。如果使用</span><span lang="EN-US">TLBIMP</span><span style="FONT-FAMILY: 宋体">,就可以把命名空间改为其他名称。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">下面看看</span><span lang="EN-US">MSXML_sample</span><span style="FONT-FAMILY: 宋体">示例代码中最重要的代码行。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">因为已经有了引用,所以添加如下代码:</span></p>
<p class="2" style="MARGIN-TOP: 8.15pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">using MSXML2;</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">还需要一个类级的变量:</span></p>
<p class="2" style="MARGIN-TOP: 8.15pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">private DOMDocument40 doc;</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">现在准备在应用程序中使用</span><span lang="EN-US">MSXML</span><span style="FONT-FAMILY: 宋体">。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">我们要从列表框中获取</span><span lang="EN-US">ISBN</span><span style="FONT-FAMILY: 宋体">,使用一个简单的</span><span lang="EN-US">XPath</span><span style="FONT-FAMILY: 宋体">搜索,就可以知道匹配的书籍节点,在消息框中显示该节点的文本</span><span lang="EN-US">(</span><span style="FONT-FAMILY: 宋体">书名和价格</span><span lang="EN-US">)</span><span style="FONT-FAMILY: 宋体">。</span><span lang="EN-US">XML Path Language (</span><span lang="EN-US">XPath)</span><span style="FONT-FAMILY: 宋体">是一种</span><span lang="EN-US">XML</span><span style="FONT-FAMILY: 宋体">记号,可以用于查询和过滤</span><span lang="EN-US">XML</span><span style="FONT-FAMILY: 宋体">文档中的文本。本章的后面介绍如何在</span><span lang="EN-US">.NET</span><span style="FONT-FAMILY: 宋体">中使用</span><span lang="EN-US">XPath</span><span style="FONT-FAMILY: 宋体">。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">下面是在列表框中选择条目的事件处理程序代码:</span></p>
<p class="2" style="MARGIN-TOP: 8.15pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">protected void listBox1</span><span lang="EN-US" style="FONT-FAMILY: 'Baskerville BE Regular'">_</span><span lang="EN-US">SelectedIndexChanged (</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> object sender, System.EventArgs e)</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">{</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> string srch=listBox1.SelectedItem.ToString();</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> IXMLDOMNode nd=doc.selectSingleNode(</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> "bookstore/book[@ISBN='" + srch + "']");</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> MessageBox.Show(nd.text);</span></p>
<p class="2" style="MARGIN-TOP: 0cm; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">}</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">下面编写单击按钮的事件处理程序。首先,加载</span><span lang="EN-US">books.xml</span><span style="FONT-FAMILY: 宋体">文件,注意,如果没有在</span><span lang="EN-US">bin/debug</span><span style="FONT-FAMILY: 宋体">或</span><span lang="EN-US"> bin/release</span><span style="FONT-FAMILY: 宋体">文件夹中运行可执行文件,就需要适当地调整路径:</span></p>
<p class="2" style="MARGIN-TOP: 8.15pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">protected void button1</span><span lang="EN-US" style="FONT-FAMILY: 'Baskerville BE Regular'">_</span><span lang="EN-US">Click (object sender, System.EventArgs e)</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">{</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> doc=new DOMDocument40 ();</span></p>
<p class="2" style="MARGIN-TOP: 0cm; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US"> doc.load("..\\..\\..\\books.xml");</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">下面的代码声明</span><span lang="EN-US">nodes</span><span style="FONT-FAMILY: 宋体">是书籍节点的一个节点列表,在本例中有</span><span lang="EN-US">3</span><span style="FONT-FAMILY: 宋体">个书籍节点:</span></p>
<p class="2" style="MARGIN-TOP: 8.15pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><a ftel="nodes"><span lang="EN-US"> IXMLDOMNodeList nodes;</span></a></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> nodes = doc.selectNodes("bookstore/book");</span></p>
<p class="2" style="MARGIN-TOP: 0cm; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US"> IXMLDOMNode node=nodes.nextNode();</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">迭代这些节点,把</span><span lang="EN-US">ISBN</span><span style="FONT-FAMILY: 宋体">属性的文本值添加到</span><span lang="EN-US">listBox1</span><span style="FONT-FAMILY: 宋体">中:</span></p>
<p class="2" style="MARGIN-TOP: 8.15pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US"> while(node!=null) </span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> {</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> listBox1.Items.Add(node.attributes.getNamedItem("ISBN").text);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> node=nodes.nextNode ();</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> }</span></p>
<p class="2" style="MARGIN-TOP: 0cm; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">}</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">图</span><span lang="EN-US">23-1</span><span style="FONT-FAMILY: 宋体">是执行该示例后所得到的屏幕图,单击按钮,把数据加载到列表框中。然后选择列表框中的一项。</span></p>
<p align="center"><span lang="EN-US"><img height="191" src="23/image001.jpg" width="176" border="0" alt="" /></span></p>
<p style="FTEL: .0001pt" align="center"><span style="FONT-FAMILY: 宋体">图</span> <span lang="EN-US"> 23-1</span></p></div>
<!-- page -->
<div class="page" style="text-align: center">
<a href="100165636.htm">上一页</a> <a href="index.html">首页</a> <a href="100165638.htm">下一页</a>
</div>
<div style="margin: 0px auto; width: 700px; border: solid 1px #0b5f98;">
<div style="float: left; width: 16px; background-color: #0b5f98; color: White; padding: 1px;">
图书导读
</div>
<div style="float: right; width: 670px; text-align: left; line-height: 16pt; padding-left: 2px">
<!--导读-->
<h1 id="divCurrentNode2" style="color: #b83507; width: 100%; text-align: left; font-size: 12px; padding-left: 2px">当前章节:<a href='100165637.htm'><font color='red'>23.3 在.NET中使用MSXML</font></a></h1>
<div id="divRealteNod2" style="padding-left: 2px">
<div style='float:left;width:49%'>·<a href='100165634.htm'>22.4 小结</a></div><div style='float:right;width:49%'>·<a href='100165635.htm'>23.1 .NET支持的XML标准</a></div><div style='float:left;width:49%'>·<a href='100165636.htm'>23.2 System.Xml命名空间</a></div><div style='float:right;width:49%'>·<a href='100165638.htm'>23.4 使用System.Xml类</a></div><div style='float:left;width:49%'>·<a href='100165639.htm'>23.5 读写流格式的XML</a></div><div style='float:right;width:49%'>·<a href='100165640.htm'>23.5.1 使用 XmlTextReader类</a></div></div>
</div>
</div>
</div>
<!-- 评论 -->
<!-- 今日推荐 -->
</div>
<!-- 页脚 -->
<div id="foot">
<img src="../../book/readbook.aspx@node=5637&bookid=16&bookname=23.3++_25d4_25da.NET_25d6_25d0_25ca_25b9_25d3_25c3MSXML" alt="" width="0" height="0" />
<style>
</div>
</body>
</html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?