⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 100165643.htm

📁 C#高级编程(第三版),顶死你们。。 。up
💻 HTM
📖 第 1 页 / 共 4 页
字号:
            <td style="PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 272.85pt; BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" valign="top" width="364">
            <p class="a4" style="MARGIN-LEFT: 10.7pt"><span style="FONT-FAMILY: 宋体">表示声明节点</span><span lang="EN-US"> (&lt;?xml version='1.0'&hellip;&gt;)</span></p>
            </td>
        </tr>
        <tr>
            <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 165.85pt; BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT-STYLE: none" valign="top" width="221">
            <p class="a4" style="MARGIN-LEFT: 10.7pt"><span lang="EN-US">XmlDocumentType</span></p>
            </td>
            <td style="PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 272.85pt; BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" valign="top" width="364">
            <p class="a4" style="MARGIN-LEFT: 10.7pt"><span style="FONT-FAMILY: 宋体">与文档类型声明相关的数据</span></p>
            </td>
        </tr>
        <tr>
            <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 165.85pt; BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT-STYLE: none" valign="top" width="221">
            <p class="a4" style="MARGIN-LEFT: 10.7pt"><span lang="EN-US">XmlElement</span></p>
            </td>
            <td style="PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 272.85pt; BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" valign="top" width="364">
            <p class="a4" style="MARGIN-LEFT: 10.7pt"><span style="FONT-FAMILY: 宋体">一个</span><span lang="EN-US">XML</span><span style="FONT-FAMILY: 宋体">元素对象</span></p>
            </td>
        </tr>
        <tr>
            <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 165.85pt; BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT-STYLE: none" valign="top" width="221">
            <p class="a4" style="MARGIN-LEFT: 10.7pt"><span lang="EN-US">XmlEntityReferenceNode</span></p>
            </td>
            <td style="PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 272.85pt; BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" valign="top" width="364">
            <p class="a4" style="MARGIN-LEFT: 10.7pt"><span style="FONT-FAMILY: 宋体">表示一个实体引用节点</span><span lang="EN-US"> </span></p>
            </td>
        </tr>
        <tr>
            <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 165.85pt; BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT-STYLE: none" valign="top" width="221">
            <p class="a4" style="MARGIN-LEFT: 10.7pt"><span lang="EN-US">XmlProcessingInstruction</span></p>
            </td>
            <td style="PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 272.85pt; BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" valign="top" width="364">
            <p class="a4" style="MARGIN-LEFT: 10.7pt"><span style="FONT-FAMILY: 宋体">包含</span><span lang="EN-US">XML</span><span style="FONT-FAMILY: 宋体">处理指令</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">可以看出,</span><span lang="EN-US">.NET</span><span style="FONT-FAMILY: 宋体">使其类适合于任何</span><span lang="EN-US">XML</span><span style="FONT-FAMILY: 宋体">类型。因此,该工具集是非常灵活和强大的。我们不打算详细介绍每个类,而是用几个示例来说明可以完成什么任务。其层次结构如图</span><span lang="EN-US">23-5&nbsp;&nbsp; </span><span style="FONT-FAMILY: 宋体">所示。</span></p>
<p align="center"><span lang="EN-US"><img height="624" src="23/image005.jpg" width="351" border="0" alt="" /></span></p>
<p style="FTEL: 8.15pt" align="center"><span style="FONT-FAMILY: 宋体">图</span><span lang="EN-US">&nbsp; 23-5</span></p>
<h3 style="MARGIN-TOP: 8.15pt; MARGIN-LEFT: 0cm; MARGIN-RIGHT: 0cm; FTEL: 8.15pt"><span style="FONT-FAMILY: 黑体">使用</span><span lang="EN-US">XmlDocument</span><span style="FONT-FAMILY: 黑体">对象</span></h3>
<p class="MsoNormal"><span lang="EN-US">XmlDocument</span><span style="FONT-FAMILY: 宋体">及其派生类</span><span lang="EN-US">XmlDataDocument(</span><span style="FONT-FAMILY: 宋体">详见本章后面的内容</span><span lang="EN-US">)</span><span style="FONT-FAMILY: 宋体">是用于在</span><span lang="EN-US">.NET</span><span style="FONT-FAMILY: 宋体">中表示</span><span lang="EN-US">DOM</span><span style="FONT-FAMILY: 宋体">的类。与</span><span lang="EN-US">XmlReader </span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US"> XmlWriter</span><span style="FONT-FAMILY: 宋体">不同,</span><span lang="EN-US">XmlDocument</span><span style="FONT-FAMILY: 宋体">具有读写功能,并可以随机访问</span><span lang="EN-US">DOM</span><span style="FONT-FAMILY: 宋体">树。</span><span lang="EN-US">XmlDocument</span><span style="FONT-FAMILY: 宋体">类似于</span><span lang="EN-US">MSXML</span><span style="FONT-FAMILY: 宋体">中的</span><span lang="EN-US">DOM</span><span style="FONT-FAMILY: 宋体">执行方式。如果您用</span><span lang="EN-US">MSXML</span><span style="FONT-FAMILY: 宋体">编过程序,就会觉得使用</span><span lang="EN-US">XmlDocument</span><span style="FONT-FAMILY: 宋体">很合适。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">下面介绍的示例创建一个</span><span lang="EN-US">XmlDocument</span><span style="FONT-FAMILY: 宋体">对象,加载磁盘上的一个文档,再从标题元素中加载带有数据的列表框,这类似于</span><span lang="EN-US">XmlReader</span><span style="FONT-FAMILY: 宋体">一节的示例,区别是本例选择要使用的节点,而不是像</span><span lang="EN-US">XmlReader</span><span style="FONT-FAMILY: 宋体">示例那样浏览整个文档。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">下面是该示例的代码,与</span><span lang="EN-US">XmlReader</span><span style="FONT-FAMILY: 宋体">示例相比,这个示例是比较简单的</span><span lang="EN-US">(</span><span style="FONT-FAMILY: 宋体">该文件在下载的</span><span lang="EN-US">DOMSample1</span><span style="FONT-FAMILY: 宋体">文件夹中</span><span lang="EN-US">)</span><span style="FONT-FAMILY: 宋体">:</span></p>
<p class="a6" style="MARGIN-TOP: 8.15pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><a ftel="XMLDocument"><span lang="EN-US">private void button1</span></a><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="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">{</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; // doc is declared at the module level</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; // change path to match your path structure</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; doc.Load(&quot;..\\..\\..\\books.xml&quot;);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; // get only the nodes that we want</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; XmlNodeList nodeLst=doc.GetElementsByTagName(&quot;title&quot;);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; // iterate through the XmlNodeList</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; foreach(XmlNode node in nodeLst) listBox1.Items.Add(node.InnerText);</span></p>
<p class="a6" 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></p>
<p class="2" style="MARGIN-TOP: 8.15pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">private XmlDocument doc=new XmlDocument();</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">如果这就是我们需要完成的工作,使用</span><span lang="EN-US">XmlReader</span><span style="FONT-FAMILY: 宋体">加载列表框就是一种非常高效的方式,原因是我们只浏览一次文档,就完成了处理。这就是</span><span lang="EN-US">XmlReader</span><span style="FONT-FAMILY: 宋体">的工作方式。但如果要重新查看某个节点,最好使用</span><span lang="EN-US">XmlDocument</span><span style="FONT-FAMILY: 宋体">。扩展该示例,添加另一个事件处理程序</span><span lang="EN-US">(</span><span style="FONT-FAMILY: 宋体">即</span><span lang="EN-US">DOMSample2)</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">private void listBox1</span><span lang="EN-US" style="FONT-FAMILY: 'Baskerville BE Regular'">_</span><span lang="EN-US">SelectedIndexChanged(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; //create XPath search string</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; string srch=&quot;bookstore/book[title='&quot; + listBox1.SelectedItem.ToString() </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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + &quot;']&quot;;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; //look for the extra data</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; XmlNode foundNode = doc.SelectSingleNode(srch);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; if(foundNode != null)</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(foundNode.InnerText);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; else</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(&quot;Not found&quot;);</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">SelectedIndexChanged()</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">XPath </span><span style="FONT-FAMILY: 宋体">语句,把它传送给</span><span lang="EN-US">doc</span><span style="FONT-FAMILY: 宋体">对象的</span><span lang="EN-US">SelectSingleNode() </span><span style="FONT-FAMILY: 宋体">方法,该方法返回</span><span lang="EN-US">title</span><span style="FONT-FAMILY: 宋体">是书名的一部分的</span><span lang="EN-US">book</span><span style="FONT-FAMILY: 宋体">元素</span><span lang="EN-US">(foundNode)</span><span style="FONT-FAMILY: 宋体">。在消息框中显示节点的</span><span lang="EN-US">InnerText</span><span style="FONT-FAMILY: 宋体">。继续单击列表框中的项目,此时文档已经加载,且一直到释放它之前,它都处于已加载状态。</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">下面简要介绍一下</span><span lang="EN-US">SelectSingleNode()</span><span style="FONT-FAMILY: 宋体">方法,它是</span><span lang="EN-US">XmlDocument</span><span style="FONT-FAMILY: 宋体">类的</span><span lang="EN-US">Xpath</span><span style="FONT-FAMILY: 宋体">实现,</span><span lang="EN-US">SelectSingleNode ()</span><span style="FONT-FAMILY: 宋体">和</span> <span lang="EN-US">SelectNodes()</span><span style="FONT-FAMILY: 宋体">都是在</span><span lang="EN-US">XmlNode</span><span style="FONT-FAMILY: 宋体">中定义的,而</span><span lang="EN-US">XmlDocument</span><span style="FONT-FAMILY: 宋体">是基于</span><span lang="EN-US">XmlNode</span><span style="FONT-FAMILY: 宋体">的。</span><span lang="EN-US">SelectSingleNode()</span><span style="FONT-FAMILY: 宋体">返回一个</span><span lang="EN-US">XmlNode</span><span style="FONT-FAMILY: 宋体">,</span><span lang="EN-US">SelectNodes()</span><span style="FONT-FAMILY: 宋体">返回一个</span><span lang="EN-US">XmlNodeList</span><span style="FONT-FAMILY: 宋体">。</span><span lang="EN-US">System.Xml.XPath</span><span style="FONT-FAMILY: 宋体">命名空间包含许多</span><span lang="EN-US">Xpath</span><span style="FONT-FAMILY: 宋体">实现。后面的一节会介绍它们。</span></p>
<h4 style="FTEL: 21.45pt"><span lang="EN-US">1. </span><span style="FONT-FAMILY: 黑体">插入节点</span></h4>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">前面的示例使用</span><span lang="EN-US">XmlTextWriter</span><span style="FONT-FAMILY: 宋体">创建一个新文档。其局限性是不能把节点插入到当前文档中。而使用</span><span lang="EN-US">XmlDocument</span><span style="FONT-FAMILY: 宋体">类可以做到这一点。把上一个示例中的</span><span lang="EN-US">button1</span><span lang="EN-US" style="FONT-FAMILY: 'Baskerville BE Regular'">_</span><span lang="EN-US">Click()</span><span style="FONT-FAMILY: 宋体">事件处理程序作如下改动</span><span lang="EN-US">(</span><span style="FONT-FAMILY: 宋体">在下载代码的</span><span lang="EN-US">DOMSample3</span><span style="FONT-FAMILY: 宋体">中</span><span lang="EN-US">)</span><span style="FONT-FAMILY: 宋体">:</span></p>
<p class="a6" style="MARGIN-TOP: 8.15pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">private 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="a6" 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; //change path to match your structure</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; doc.Load(&quot;..\\..\\..\\books.xml&quot;);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; //create a new 'book' element</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; XmlElement newBook=doc.CreateElement(&quot;book&quot;);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; //set some attributes</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; newBook.SetAttribute(&quot;genre&quot;,&quot;Mystery&quot;);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; newBook.SetAttribute(&quot;publicationdate&quot;,&quot;2001&quot;);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; newBook.SetAttribute(&quot;ISBN&quot;,&quot;123456789&quot;);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; //create a new 'title' element</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; XmlElement newTitle=doc.CreateElement(&quot;title&quot;);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; newTitle.InnerText=&quot;The Case of the Missing Cookie&quot;;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; newBook.AppendChild(newTitle);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; //create new author element</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; XmlElement newAuthor=doc.CreateElement(&quot;author&quot;);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; newBook.AppendChild(newAuthor);</span></p>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -