gpt4 book ai didi

c# - 编写每行最多两个标签的 xml

转载 作者:数据小太阳 更新时间:2023-10-29 01:44:02 25 4
gpt4 key购买 nike

我正在从 .NET 的 XElement 中保存 xml。我一直在使用 ToString 方法,但格式看起来并不像我想要的那样(下面的示例)。我希望每行最多两个标签。我怎样才能做到这一点?


正在保存 XElement.Parse("<a><b><c>one</c><c>two</c></b><b>three<c>four</c><c>five</c></b></a>").ToString()给我

<a>
<b>
<c>one</c>
<c>two</c>
</b>
<b>three<c>four</c><c>five</c></b>
</a>

但为了可读性,我宁愿“三”、“四”和“五”在不同的行上:

<a>
<b>
<c>one</c>
<c>two</c>
</b>
<b>three
<c>four</c>
<c>five</c>
</b>
</a>

编辑:是的,我知道这在句法上有所不同并且“不符合 xml 的精神”,但我很务实。最近,我看到只有 3 行的兆字节大小的 xml 文件——这些文件对文本编辑器、源代码控制和 diff 工具来说是一个挑战。需要做点什么!我测试过更改上面的格式与我们的应用程序兼容。

最佳答案

如果您确实想要该输出,则需要手动执行,并根据需要在节点周围添加空格。

几乎 XML 文档中的所有空格都是有意义的,即使我们只是将其视为缩进。当我们要求序列化程序为我们缩进文档时,它正在对可以提取的内容进行更改,因此它们会尽量保守。元素

<tag>foo</tag>

<tag>
foo
</tag>

具有不同的内容,如果序列化程序将前者更改为后者,它会更改您在请求 <tag> 的内容时从 XML API 返回的内容。 .

通常的经验法则是,如果元素之间存在任何现有的非空白,则不会应用缩进。在这种情况下,您的 three如果序列化程序应用了您想要的缩进,标签之间将被修改,因此不会自动为您做这件事。


如果您可以控制 XML 格式,则不建议像这样混合元素和文本子项,其中 <b>有文本 ( three ) 和元素 ( <c> ) 子项,因为它会导致您所看到的问题。

关于c# - 编写每行最多两个标签的 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12912834/

25 4 0