我希望能够使用 XmlWriter(C#、.NET)创建一个 XML 文档,其中多次调用一个生成 XML 的方法,然后一次调用关闭所有内容的 final方法离开。当我多次尝试调用此方法时:
private void SiblingGenerator(List<XmlNode> XMLList, XmlWriter textWriter,
string newPath, FileInfo fi)
{
if (fi.Length == 0)
{
MessageBox.Show("file doesn't exist");
textWriter.WriteStartDocument();
textWriter.WriteStartElement("batch");
//...
}
// ...
}
...它返回一个错误,指出 WriteStartDocument 需要成为第一个调用
。
似乎对 textWriter
的调用实际上并没有被写入,因为在每次后续调用中文档都会重新开始。
谁能告诉我为什么会这样?
最佳答案
XmlWriter 只能转发,不能重复使用。您不应在此类的同一个实例上多次调用 WriteStartDocument
。因为它是您的方法的参数,所以调用者必须负责处理编写器的生命周期。
using (var writer = XmlWriter.Create("foo.xml"))
{
SiblingGenerator(XMLList, writer, newPath, fi);
}
如果您需要多次重用 SiblingGenerator
函数,那么您可能希望将 WriteStartDocument
方法的调用外部化:
using (var writer = XmlWriter.Create("foo.xml"))
{
writer.WriteStartDocument();
SiblingGenerator(XMLList, writer, newPath, fi);
SiblingGenerator(XMLList, writer, newPath, fi);
...
writer.WriteEndDocument();
}
关于c# - 使用 XmlWriter 以迭代方式构建 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4580774/