【发布时间】:2015-07-22 15:41:40
【问题描述】:
我有一个现有的 XML 文件。新内容通过XmlWriter(或XmlTextWriter,两者都表现出相同的行为无关紧要)添加到其中。
问题:
新内容没有缩进格式。
XmlWriter 的示例输出,Indent=true 和 IndentChars 设置为空格:
<?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 (<RootContext Type="ETSP"> ...):
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