如何在新行上关闭节点和标记来格式化XML?

Mot*_*tti 2 .net xml formatting xmlwriter

我正在修改.vcrpoj.NET中的一些文件但是当我保存格式化更改(这会破坏我的diff工具)时,原始文件看起来像这样:

<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
>
<Platforms>
    <Platform
        Name="Win32"
    />
</Platforms>
<ToolFiles>
</ToolFiles>
Run Code Online (Sandbox Code Playgroud)

但是当我保存更改时,它看起来像这样:

<VisualStudioProject
ProjectType="Visual C++"
Version="8.00">
<Platforms>
    <Platform
        Name="Win32" />
</Platforms>
<ToolFiles></ToolFiles>
Run Code Online (Sandbox Code Playgroud)

我正在使用以下内容 XmlWritterSettings

XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = ("\t");
settings.Encoding = Encoding.UTF8;
settings.NewLineOnAttributes = true;
Run Code Online (Sandbox Code Playgroud)

有没有办法定义设置以匹配visual studio使用的格式?(NewLineOnAttributes否则我需要它甚至更糟).

Tho*_*que 6

我不认为你可以用内置的XmlWriter实现做到这一点......你可以从XmlTextWriter继承,并覆盖适当的方法(不确定它是哪一个......)来编写具有所需格式的元素


以下是一些支持XML的diff工具(它将基于语义比较文件,忽略格式化):

使用这些工具,您无需担心生成的XML格式

  • 我试了一下,如果没有很多代码,似乎不可能做到这一点......无论如何,如果格式化的唯一问题是diff工具,我建议你使用一个理解XML的工具,比较语义,而不仅仅是文本.如果您使用Beyond Compare,则会有一个插件在比较它们之前使用Tidy格式化这两个文档. (2认同)