【问题标题】:XMLWriter formatting when appending to existing XML附加到现有 XML 时的 XMLWriter 格式
【发布时间】:2015-07-22 15:41:40
【问题描述】:

我有一个现有的 XML 文件。新内容通过XmlWriter(或XmlTextWriter,两者都表现出相同的行为无关紧要)添加到其中。

问题:
新内容没有缩进格式。

XmlWriter 的示例输出,Indent=trueIndentChars 设置为空格:

<?xml version="1.0"?>
<RootContext Type="ETSP">
<Root><Element1>1</Element1><Element2>2</Element2><Element3>3</Element3><Element4>4</Element4><Element5>5</Element5></Root></RootContext>

使用此示例代码创建额外的 XML 内容,将其添加到现有 XML (&lt;RootContext Type="ETSP"&gt; ...):

        XElement srcTree = new XElement("Root",
            new XElement("Element1", 1),
            new XElement("Element2", 2),
            new XElement("Element3", 3),
            new XElement("Element4", 4),
            new XElement("Element5", 5));

我要附加到的现有 XML 是通过 XmlTextReader/XElement.Load() 读取的。

现在: 在创建新 XML 时发生 - 使用相同的设置 - 仅包含从上面生成的 sn-p:

<?xml version="1.0"?>
<Root>
   <Element1>1</Element1>
   <Element2>2</Element2>
   <Element3>3</Element3>
   <Element4>4</Element4>
   <Element5>5</Element5>
</Root>

太好了。正确缩进、格式化——正是我想要的。

现在 - 附加到现有 XML 内容时如何获得缩进格式?

【问题讨论】:

  • 我很惊讶你可以追加数据。不这样做怎么样,读入 XDocument,附加到 XDocument,用缩进写出整个内容?
  • 好吧 - 为什么不呢?使用 TextReader 加载 XML,然后您的文档为 XElements,瞧.. 我将尝试使用 XDocument,感谢您的提示
  • 你能分享一下实际在写的代码吗?
  • 这里没有任何东西可以用来重现您的问题。 Ident=true 在写入大量空白时会被忽略,但它可以是任何东西。添加一些代码。虽然我倾向于同意@JohnSaunders - 应该有一种更简单的方法来做到这一点,不涉及使用如此低级的 API。
  • @JohnSaunders 谢谢 - 直接使用 XDocument 可以正常工作!

标签: c# .net xml xmlwriter xmltextwriter


【解决方案1】:

FWIW - 使用 John Saunders 建议的方法并转到 XDocument 工作正常。

新内容以所需格式附加到现有文档。

【讨论】:

    猜你喜欢
    • 2014-01-22
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2012-07-12
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    相关资源
    最近更新 更多