——此文章摘自《C#高级编程(第
版)》定价
元 特价
元 购买
最后把newBook元素添加到docDocumentElement节点上它与其他book元素同级现在用新元素更新现有的文档
最后把新XML文档写到磁盘上在这个示例中创建一个新XmlTextWriter把它传送给WriteContentTo方法WriteContentTo 和 WriteTo方法都带一个XmlTextWriter参数WriteContentTo把当前节点及其所有的子节点都保存到XmlTextWriter而WriteTo只保存当前节点因为doc是一个基于XmlDocument的对象它表示整个文档所以应保存它我们还使用了Save方法它总是保存整个文档Save有个重载方法其参数分别是一个包含文件名和路径的字符串基于Stream的对象基于TextWriter的对象和基于XmlWriter的对象
我们还在XmlTextWriter上调用了Close()方法刷新内部缓存并关闭文件
在运行这个示例时会得到如图所示的屏幕图注意列表框底部的新项
图
如果要从头开始创建一个文档可以使用XmlTextWriter(见本章前面的介绍)还可以使用XmlDocument使用哪个比较好?如果要写入XML流的数据已经准备好最好选择XmlTextWriter类但是如果需要一次建立XML文档的一小部分在不同的地方插入节点用XmlDocument创建文档就比较好为此可以把下面的代码
docLoad(\\\\\\booksxml);
改为(这些代码在示例DOMSample中)
//create the declaration section
XmlDeclaration newDec = docCreateXmlDeclaration(nullnull);
docAppendChild(newDec);
//create the new root element
XmlElement newRoot = docCreateElement(newBookstore);
docAppendChild(newRoot);
首先创建一个新XmlDeclaration其参数是版本(目前是)编码(edcoding)和standalone标志如果没有使用null编码参数应设置为一个字符串该字符串应是SystemTextEncoding类的一部分null默认为UTFstandalone标志可以是yesno或null但如果是null就不使用该属性也不包含在文档中
要创建的下一个元素是DocumentElement在本例中它称为newBookstore这样区别就比较明显代码的其余部分与前面的示例相同执行的方式也相同下面是从代码中生成的booksEditxml
<?xml version=?>
<newBookstore>
<book genre=Mystery publicationdate= ISBN=>
<title>The Case of the Missing Cookie</title>
<author>
<name>C Monster</name>
</author>
<price></price>
</book>
</newBookstore>
本章没有介绍XmlDocument类的每个细节也没有介绍在NET中对创建DOM模型有帮助的其他类但是我们说明了NET中的DOM有多么灵活和强大在希望随机访问文档时可以使用XmlDocument类在希望有一个流类型的模型时可以使用基于XmlReader的类基于XmlDocument的XmlNode的灵活性要求的内存比较多读取文档的性能也没有使用XmlReader好所以应仔细考虑在这种情况下最好使用什么方法
[] [] []