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

📄 100165643.htm

📁 C#高级编程(第三版),顶死你们。。 。up
💻 HTM
📖 第 1 页 / 共 4 页
字号:
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; //create new name element</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; XmlElement newFTEL=doc.CreateElement(&quot;name&quot;);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; newName.InnerText=&quot;C. Monster&quot;;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; newAuthor.AppendChild(newName);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; //create new price element</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; XmlElement newPrice=doc.CreateElement(&quot;price&quot;);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; newPrice.InnerText=&quot;9.95&quot;;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; newBook.AppendChild(newPrice);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; //add to the current document</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; doc.DocumentElement.AppendChild(newBook);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; //write out the doc to disk</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; XmlTextWriter tr=new XmlTextWriter(&quot;..\\..\\..\\booksEdit.xml&quot;,null);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; tr.Formatting=Formatting.Indented;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; doc.WriteContentTo(tr);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; tr.Close();</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; //load listBox1 with all of the titles, including new one</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; foreach(XmlNode node in nodeLst)</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.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><span lang="EN-US">The Case of the Missing Cookie</span><span style="FONT-FAMILY: 宋体">。单击</span><span lang="EN-US">cookie caper</span><span style="FONT-FAMILY: 宋体">标题,会显示与其他标题一样的信息。中断代码,可以看出,这是一个相当简单的过程。首先,创建一个新的</span><span lang="EN-US">book</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">XmlElement newBook = doc.CreateElement(&quot;book&quot;);</span></p>
<p class="MsoNormal"><span lang="EN-US">CreateElement()</span><span style="FONT-FAMILY: 宋体">有</span><span lang="EN-US">3</span><span style="FONT-FAMILY: 宋体">个重载方法,可以指定:</span></p>
<p class="1" style="MARGIN-LEFT: 37.55pt; FTEL: -16.1pt"><span lang="EN-US">●<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体">元素名</span></p>
<p class="1" style="MARGIN-LEFT: 37.55pt; FTEL: -16.1pt"><span lang="EN-US">●<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体">名称和命名空间</span><span lang="EN-US">URI</span></p>
<p class="1" style="MARGIN-LEFT: 37.55pt; FTEL: -16.1pt"><span lang="EN-US">●<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体">前缀、本地名和命名空间</span></p>
<p class="MsoNormal"><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">newBook.SetAttribute(&quot;genre&quot;,&quot;Mystery&quot;);</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">newBook.SetAttribute(&quot;publicationdate&quot;,&quot;2001&quot;);</span></p>
<p class="a6" style="MARGIN-TOP: 0cm; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">newBook.SetAttribute(&quot;ISBN&quot;,&quot;123456789&quot;);</span></p>
<p class="MsoNormal"><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">XmlElement newTitle = doc.CreateElement(&quot;title&quot;);</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">newTitle.InnerText = &quot;The Case of the Missing Cookie&quot;;</span></p>
<p class="a6" style="MARGIN-TOP: 0cm; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">newBook.AppendChild(newTitle);</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">再次创建一个新的基于</span><span lang="EN-US">XmlElement</span><span style="FONT-FAMILY: 宋体">的对象</span><span lang="EN-US">(newTitle)</span><span style="FONT-FAMILY: 宋体">,把</span><span lang="EN-US">InnerText</span><span style="FONT-FAMILY: 宋体">属性设置为新书名,把该元素添加为</span><span lang="EN-US">book</span><span style="FONT-FAMILY: 宋体">元素的一个子元素。对</span><span lang="EN-US">book</span><span style="FONT-FAMILY: 宋体">元素中的其他元素重复这一操作。注意把</span><span lang="EN-US">name</span><span style="FONT-FAMILY: 宋体">元素添加为</span><span lang="EN-US">author</span><span style="FONT-FAMILY: 宋体">元素的一个子元素。这样就可以在其他</span><span lang="EN-US">book</span><span style="FONT-FAMILY: 宋体">元素中得到合适的嵌套关系。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">最后把</span><span lang="EN-US">newBook</span><span style="FONT-FAMILY: 宋体">元素添加到</span><span lang="EN-US">doc.DocumentElement</span><span style="FONT-FAMILY: 宋体">节点上,它与其他</span><span lang="EN-US">book</span><span style="FONT-FAMILY: 宋体">元素同级。现在用新元素更新现有的文档。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">最后,把新</span><span lang="EN-US">XML</span><span style="FONT-FAMILY: 宋体">文档写到磁盘上。在这个示例中,创建一个新</span><span lang="EN-US">XmlTextWriter</span><span style="FONT-FAMILY: 宋体">,把它传送给</span><span lang="EN-US">WriteContentTo</span><span style="FONT-FAMILY: 宋体">方法。</span><span lang="EN-US">WriteContentTo </span><span style="FONT-FAMILY: 宋体">和</span> <span lang="EN-US">WriteTo</span><span style="FONT-FAMILY: 宋体">方法都带一个</span><span lang="EN-US">XmlTextWriter</span><span style="FONT-FAMILY: 宋体">参数。</span><span lang="EN-US">WriteContentTo</span><span style="FONT-FAMILY: 宋体">把当前节点及其所有的子节点都保存到</span><span lang="EN-US">XmlTextWriter</span><span style="FONT-FAMILY: 宋体">,而</span><span lang="EN-US">WriteTo</span><span style="FONT-FAMILY: 宋体">只保存当前节点。因为</span><span lang="EN-US">doc</span><span style="FONT-FAMILY: 宋体">是一个基于</span><span lang="EN-US">XmlDocument</span><span style="FONT-FAMILY: 宋体">的对象,它表示整个文档,所以应保存它。我们还使用了</span><span lang="EN-US">Save</span><span style="FONT-FAMILY: 宋体">方法,它总是保存整个文档,</span><span lang="EN-US">Save</span><span style="FONT-FAMILY: 宋体">有</span><span lang="EN-US">4</span><span style="FONT-FAMILY: 宋体">个重载方法,其参数分别是一个包含文件名和路径的字符串、基于</span><span lang="EN-US">Stream</span><span style="FONT-FAMILY: 宋体">的对象、基于</span><span lang="EN-US">TextWriter</span><span style="FONT-FAMILY: 宋体">的对象和基于</span><span lang="EN-US">XmlWriter</span><span style="FONT-FAMILY: 宋体">的对象。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">我们还在</span><span lang="EN-US">XmlTextWriter</span><span style="FONT-FAMILY: 宋体">上调用了</span><span lang="EN-US">Close()</span><span style="FONT-FAMILY: 宋体">方法,刷新内部缓存,并关闭文件。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">在运行这个示例时,会得到如图</span><span lang="EN-US">23-6</span><span style="FONT-FAMILY: 宋体">所示的屏幕图。注意列表框底部的新项。</span></p>
<p align="center"><em><span lang="EN-US"><img height="187" src="23/image006.jpg" width="172" border="0" alt="" /></span></em></p>
<p style="FTEL: 8.15pt" align="center"><span style="FONT-FAMILY: 宋体">图</span><span lang="EN-US">&nbsp; 23-6</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">如果要从头开始创建一个文档,可以使用</span><span lang="EN-US">XmlTextWriter(</span><span style="FONT-FAMILY: 宋体">见本章前面的介绍</span><span lang="EN-US">)</span><span style="FONT-FAMILY: 宋体">。还可以使用</span><span lang="EN-US">XmlDocument</span><span style="FONT-FAMILY: 宋体">。使用哪个比较好?如果要写入</span><span lang="EN-US">XML</span><span style="FONT-FAMILY: 宋体">流的数据已经准备好,最好选择</span><span lang="EN-US">XmlTextWriter</span><span style="FONT-FAMILY: 宋体">类。但是,如果需要一次建立</span><span lang="EN-US">XML</span><span style="FONT-FAMILY: 宋体">文档的一小部分,在不同的地方插入节点,用</span><span lang="EN-US">XmlDocument</span><span style="FONT-FAMILY: 宋体">创建文档就比较好。为此,可以把下面的代码:</span></p>
<p class="a6" style="MARGIN-TOP: 4.9pt; 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" style="FTEL: 0cm"><span style="FONT-FAMILY: 宋体">改为</span><span lang="EN-US">(</span><span style="FONT-FAMILY: 宋体">这些代码在示例</span><span lang="EN-US">DOMSample4</span><span style="FONT-FAMILY: 宋体">中</span><span lang="EN-US">)</span><span style="FONT-FAMILY: 宋体">:</span></p>
<p class="2" style="MARGIN-TOP: 4.9pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; //create the declaration section</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; XmlDeclaration newDec = doc.CreateXmlDeclaration(&quot;1.0&quot;,null,null);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; doc.AppendChild(newDec);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; //create the new root element</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; XmlElement newRoot = doc.CreateElement(&quot;newBookstore&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; doc.AppendChild(newRoot);</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">首先创建一个新</span><span lang="EN-US">XmlDeclaration</span><span style="FONT-FAMILY: 宋体">,其参数是版本</span><span lang="EN-US">(</span><span style="FONT-FAMILY: 宋体">目前是</span><span lang="EN-US">&quot;1.0&quot;)</span><span style="FONT-FAMILY: 宋体">、编码</span><span lang="EN-US">(edcoding)</span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US">standalone</span><span style="FONT-FAMILY: 宋体">标志。如果没有使用</span><span lang="EN-US">null</span><span style="FONT-FAMILY: 宋体">,编码参数应设置为一个字符串,该字符串应是</span><span lang="EN-US">System.Text.Encoding</span><span style="FONT-FAMILY: 宋体">类的一部分。</span><span lang="EN-US">null</span><span style="FONT-FAMILY: 宋体">默认为</span><span lang="EN-US">UTF-8</span><span style="FONT-FAMILY: 宋体">。</span><span lang="EN-US">standalone</span><span style="FONT-FAMILY: 宋体">标志可以是</span><span lang="EN-US">yes</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US">no</span><span style="FONT-FAMILY: 宋体">或</span><span lang="EN-US">null</span><span style="FONT-FAMILY: 宋体">,但如果是</span><span lang="EN-US">null</span><span style="FONT-FAMILY: 宋体">,就不使用该属性,也不包含在文档中。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">要创建的下一个元素是</span><span lang="EN-US">DocumentElement</span><span style="FONT-FAMILY: 宋体">。在本例中,它称为</span><span lang="EN-US">newBookstore</span><span style="FONT-FAMILY: 宋体">,这样区别就比较明显。代码的其余部分与前面的示例相同,执行的方式也相同。下面是从代码中生成的</span><span lang="EN-US">booksEdit.xml</span><span style="FONT-FAMILY: 宋体">:</span></p>
<p class="2" style="MARGIN-TOP: 4.9pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">&lt;?xml version=&quot;1.0&quot;?&gt;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&lt;newBookstore&gt;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; &lt;book genre=&quot;Mystery&quot; publicationdate=&quot;2001&quot; ISBN=&quot;123456789&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 Case of the Missing Cookie&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;C. Monster&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.95&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;/newBookstore&gt;</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">.NET</span><span style="FONT-FAMILY: 宋体">中对创建</span><span lang="EN-US">DOM</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">XmlDocument</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">XmlNode</span><span style="FONT-FAMILY: 宋体">的灵活性要求的内存比较多,读取文档的性能也没有使用</span><span lang="EN-US">XmlReader</span><span style="FONT-FAMILY: 宋体">好,所以应仔细考虑在这种情况下最好使用什么方法。</span></p></div>
                <!-- page -->
                <div class="page" style="text-align: center">
                    <a href="100165642.htm">上一页</a>&nbsp;&nbsp;&nbsp;<a href="index.html">首页</a>&nbsp;&nbsp;&nbsp;<a href="100165644.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='100165643.htm'><font color='red'>23.6  在.NET中使用DOM</font></a></h1>
                        <div id="divRealteNod2" style="padding-left: 2px">
                        <div style='float:left;width:49%'>·<a href='100165640.htm'>23.5.1  使用 XmlTextReader类</a></div><div style='float:right;width:49%'>·<a href='100165641.htm'>23.5.2  使用XmlValidatingReader类</a></div><div style='float:left;width:49%'>·<a href='100165642.htm'>23.5.3  使用XmlTextWriter类</a></div><div style='float:right;width:49%'>·<a href='100165644.htm'>23.7  在NET中使用XPath和XSLT</a></div><div style='float:left;width:49%'>·<a href='100165645.htm'>23.7.1  System.Xml.XPath命名空间</a></div><div style='float:right;width:49%'>·<a href='100165646.htm'>23.7.2  System.Xml.Xsl命名空间</a></div></div>
                    </div>
                </div>
                </div>
            <!-- 评论 -->
            <!-- 今日推荐 -->
            </div>
        <!-- 页脚 -->
        <div id="foot">
         <img src="../../book/readbook.aspx@node=5643&bookid=16&bookname=23.6++_25d4_25da.NET_25d6_25d0_25ca_25b9_25d3_25c3DOM" alt="" width="0" height="0" />
        <style>

        </div>
</body>
</html>

⌨️ 快捷键说明

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