gpt4 book ai didi

c# - 使用 XmlWriter 以迭代方式构建 XML 文件

转载 作者:太空宇宙 更新时间:2023-11-03 22:17:21 25 4
gpt4 key购买 nike

我希望能够使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com