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">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;price&gt;11.99&lt;/price&gt;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; &lt;/book&gt;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; &lt;book genre=&quot;philosophy&quot; publicationdate=&quot;1991&quot; ISBN=&quot;1-861001-57-6&quot;&gt;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;title&gt;The Gorgias&lt;/title&gt;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;author&gt;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;Plato&lt;/name&gt;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/author&gt;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;price&gt;9.99&lt;/price&gt;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; &lt;/book&gt;</span></p>
<p class="2" style="MARGIN-TOP: 0cm; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">&lt;/bookstore&gt;</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">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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">&nbsp;&nbsp; string srch=listBox1.SelectedItem.ToString();</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; IXMLDOMNode nd=doc.selectSingleNode(</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;bookstore/book[@ISBN='&quot; + srch + &quot;']&quot;);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; 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">&nbsp;&nbsp; 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">&nbsp;&nbsp; doc.load(&quot;..\\..\\..\\books.xml&quot;);</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">&nbsp;&nbsp; IXMLDOMNodeList nodes;</span></a></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; nodes = doc.selectNodes(&quot;bookstore/book&quot;);</span></p>
<p class="2" style="MARGIN-TOP: 0cm; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; 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">&nbsp;&nbsp; while(node!=null)&nbsp; </span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; {</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listBox1.Items.Add(node.attributes.getNamedItem(&quot;ISBN&quot;).text);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node=nodes.nextNode ();</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; }</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">&nbsp;23-1</span></p></div>
                <!-- page -->
                <div class="page" style="text-align: center">
                    <a href="100165636.htm">上一页</a>&nbsp;&nbsp;&nbsp;<a href="index.html">首页</a>&nbsp;&nbsp;&nbsp;<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 + -
显示快捷键?