3

我的目标是使用 C# 代码以编程方式缩进手动编写的 XML 文档。

目前,我正在使用此处指定的 XmlWriter 对其进行缩进。

但是我还有两个问题:

  1. 缩进后,所有换行符都会消失(我确实想在 XML 文档中保留人工换行符)。
  2. 同时具有文本节点和子元素的 Xml 元素 - 合并到一行。例如:
<element>text
  <subElement></subElement>
</element>

将缩进到这个:

<element>text<subElement></subElement></element>

我想上述两个问题实际上是同一个问题。

4

2 回答 2

1

如果您使用的是 XmlWriter,您可以创建一个新的 XmlWriterSettings 对象来传递您的设置。在这里您可以设置缩进、NewLineHandling 和许多其他有用的东西。

        XmlWriterSettings set = new XmlWriterSettings();
        set.NamespaceHandling = NamespaceHandling.OmitDuplicates;
        set.OmitXmlDeclaration = true;
        set.DoNotEscapeUriAttributes = false;
        set.Indent = true;
        set.NewLineChars = "\n";
        set.IndentChars = "\t";
        set.NewLineHandling = NewLineHandling.None;
        // Make any other changes... up to you

        XmlWriter writer = XmlWriter.Create(Console.Out, set);
        // You can use your writer with the passed settings
于 2013-12-27T00:13:06.113 回答
1

通常,在 XML 文档中插入空格会改变文档的语义。

但是,如果您真的想通过 XML 嵌套(没有重排)来缩进行,可以配置大多数 XML 解析器附带的序列化程序来执行此操作。

或者,您可以通过配置为缩进的 XSLT 样式表放置文档。

这些方法中的任何一种都比自己编写更简单,除非我在您的问题描述中遗漏了某些内容,否则他们应该做您需要的事情。

于 2013-12-24T03:07:15.177 回答