【问题标题】:Cannot alter settings of XmlWriter无法更改 XmlWriter 的设置
【发布时间】:2014-12-19 17:15:32
【问题描述】:

我在使用 XmlWriter 类时遇到了一些问题。我使用 XmlWriter.Create() 方法创建并实例化它,但是当我这样做时,它变成了 XmlWellFormedWriter 类型。我希望能够将 XML 片段写入文件,但是当我尝试这样做时遇到一个异常,告诉我将一致性级别设置为自动或片段。我尝试在实例化对象后更改设置:

XmlWriter writer = XmlWriter.Create(filepath);
writer.settings.ConformanceLevel = ConformanceLevel.Auto;

但是我遇到一个异常,说一致性级别是只读的,不能设置。

我也尝试过创建设置并让我的 XmlWriter 继承它们:

XmlWriterSettings settings = new XmlWriterSettings();
settings.ConformanceLevel = ConformanceLevel.Auto;
XmlWriter writer = XmlWriter.Create(filepath, settings);

但是创建的 XmlWriter 实例用它自己的设置覆盖了我的设置,将一致性级别设置为 Document。我怎样才能解决这个问题?我正在使用this website 作为教程。

【问题讨论】:

    标签: c# xml xmlwriter


    【解决方案1】:

    XmlWriter 的行为应该如此。 ConformanceLevel.Auto 指定 XML 编写器应根据传入数据确定一致性检查级别。当您不知道生成的 XML 是格式良好的 XML 文档还是片段时,此设置会很有用。在您的情况下,它切换到ConformanceLevel.Document。 ConformanceLevel 属性可用于检查特定的传入数据,ConformanceLevel.DocumentConformanceLevel.Fragment

    【讨论】:

    • 好吧,我在这两个示例中都将其设置为 ConformanceLevel.Fragment,但它仍然无法正常工作。我做错了什么?
    • 当我使用 Createmethod 声明 writer 时,创建的对象是 XmlWellFormedWriter,而不是 XmlWriter。我也无法修改设置。
    • XmlWellFormedWriter 类是 XmlWriter 抽象类的实现。 Create 方法使用 XmlWriterSettings 类来指定要在创建的 XmlWriter 对象中实现哪些功能。只需设置您需要的 XmlWriterSettings,然后调用 Create 方法。 create 方法根据调用中的给定设置重新调整正确的 XmlWriter。
    • 当我这样做时,它会创建一个 XMlWellFormedWriter 并用它自己的设置覆盖我想要的设置。编辑:我是个白痴,忘记将设置添加到 Create 方法。现在可以了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-28
    • 1970-01-01
    • 2019-07-12
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多