XmlTextWriter xmlWriter=new XmlTextWriter (12.xml,null);
xmlWriter.Formatting = Formatting.Indented;
xmlWriter.Indentation=4;
xmlWriter.WriteStartElement( "document");
xmlWriter.WriteEndElement ();
xmlWriter.Close ();能执行,可为什么就生不成 12.xml呢?
xmlWriter.Formatting = Formatting.Indented;
xmlWriter.Indentation=4;
xmlWriter.WriteStartElement( "document");
xmlWriter.WriteEndElement ();
xmlWriter.Close ();能执行,可为什么就生不成 12.xml呢?
解决方案 »
- 如何设置网站中的文件的访问权限?
- 急急急!!!高分请教!在线等!---- 当该页面已经存在时不再打开此页面!
- 100分!求一图片水印,实现动态设置水印文字,字体,大小,颜色,等效果
- C# 开发APS.NET网页,如果新建项目就是一个网站的根?
- 在ASP。NET中怎样实现Winsocket??
- [求助]vs.net2003不能新建项目
- 奇观现象,图片有时能出来有时不能
- 难道asp.net和asp是水火不容?
- 在设计模式,如何定位/编辑某一容器内的控件或HTML元素?
- 问个问题。
- 这个sql哪里错了?(很简单的问题)
- SQL Server does not exist or access denied错误,请帮忙
如前面所说,XML reader和Writer是各自独立工作的:reader只读,writer只写。假设你的应用程序要管理冗长的XML文档,且该文档有不确定的数据。Reader提供了一个很好的方法去读该文档的内容。另一方面,Writer是一个非常有用的用于创建XML文档片断工具,但是如果你想要它即能读,又能写,那么你就要用XMLDOM了。如果实际的XML文档非常庞大,又会出现了一个问题,什么问题呢?是不是把这个XML文档全部加载到内存中,然后进行读和写呢?让我们先看一下怎么样建立一个混合的流分析器用于分析大型的XMLDOM。
像一般的只读操作一样,用普通的XML reader去顺序的访问节点。不同的是,在读的同时你可以用XML writer改变属性值以及节点的内容。你用reader去读源文件中的每个节点,后台的writer创建该节点的一个拷贝。在这个拷贝中,你可以增加一些新的节点,忽略或者编辑其它的一些节点,还可以编辑属性的值。当你完成修改后,你就用新的文档替换旧的文档。
一个简单有效的办法是从只读流中拷贝节点对象到write流中,这种方法可以用XmlTextWriter类中的两个方法:WriteAttributes方法和WriteNode方法。 WriteAttributes方法读取当前reader中选中的节点的所有有效的属性,然后把属性当作一个单独的string拷贝到当前的输出流中。同样的,WriteNode方法用类似的方法处理除属性节点外的其它类型的节点。图十所示的代码片断演示了怎么用上述的两个方法创建一个源XML文档的拷贝,有选择的修改某些节点。XML树从树根开始被访问,但只输出了除属性节点类型以外的其它类型的节点。你可以把Reader和Writer整合在一个新的类中,设计一个新的接口,使它能读写流及访问属性和节点。
Figure 10 Using the WriteNode Method
XmlTextReader reader = new XmlTextReader(inputFile);
XmlTextWriter writer = new XmlTextWriter(outputFile);
// 配置 reader 和 writer
writer.Formatting = Formatting.Indented;
reader.MoveToContent();
// Write根节点
writer.WriteStartElement(reader.LocalName);
// Read and output every other node
int i=0;
while(reader.Read())
{
if (i % 2)
writer.WriteNode(reader, false);
i++;
}
// Close the root
writer.WriteEndElement();
// Close reader and writer
writer.Close();
reader.Close();
我的XmlTextReadWriter类并没有从XmlReader或者XmlWriter类中继承。取而代之的是另外两个类,一个是基于只读流(stream)的操作类,另一个是基于只写流的操作类。XmlTextReadWriter类的方法用Reader对象读数据,写入到Writer对象。为了适应不同的需求,内部的Reader和Writer 对象分别通过只读的Reader和Writer属性公开
{
// Open the XML writer (用默认的字符集)
XmlTextWriter xmlw = new XmlTextWriter(filename, null);
xmlw.Formatting = Formatting.Indented;
xmlw.WriteStartDocument();
xmlw.WriteStartElement("array");
foreach(string s in theArray)
{
xmlw.WriteStartElement("element");
xmlw.WriteAttributeString("value", s);
xmlw.WriteEndElement();
}
xmlw.WriteEndDocument();
// Close the writer
xmlw.Close();
}
我用你的程序在12.xml上加上“”后,确实可以生成了。
加引号。。