Col*_*nic 8 .net c# xml linq-to-xml
我正在从.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>
Run Code Online (Sandbox Code Playgroud)
但为了便于阅读,我宁愿"三个","四个"和"五个"分开:
<a>
<b>
<c>one</c>
<c>two</c>
</b>
<b>three
<c>four</c>
<c>five</c>
</b>
</a>
Run Code Online (Sandbox Code Playgroud)
编辑:是的我明白这在语法上是不同的,"不符合xml的精神",但我是务实的.最近我看到只有3行的兆字节大小的xml文件 - 这些对文本编辑器,源代码控制和差异工具都很有挑战性.有些事情需要做!我已经测试过,更改上面的格式与我们的应用程序兼容.
Jas*_*ers 13
如果您想要完全输出,则需要手动完成,根据需要在节点周围添加空格.
XML文档中的几乎所有空格都很重要,即使我们只将其视为缩进.当我们要求序列化程序为我们缩进文档时,它会对可以提取的内容进行更改,因此他们尽可能保守.要素
<tag>foo</tag>
Run Code Online (Sandbox Code Playgroud)
和
<tag>
foo
</tag>
Run Code Online (Sandbox Code Playgroud)
具有不同的内容,如果序列化程序将前者更改为后者,则会在请求内容时更改从XML API返回的内容<tag>.
通常的经验法则是,如果元素之间存在任何非空白,则不会应用缩进.在这种情况下,three如果序列化程序应用了您想要的缩进,则会修改标签之间的标签,因此没有任何内容可以自动为您完成.
如果您可以控制XML格式,那么就不宜混合像这样的元素和文本子元素,其中<b>包含text(three)和element(<c>)子元素,因为它会导致像您所看到的问题.
向同事解释了原因 - 我们将更改文件格式。我建议你也尝试这样做。想要做我想做的事几乎是不可能的,因为大多数 xml 工具都认为空格很重要。
| 归档时间: |
|
| 查看次数: |
480 次 |
| 最近记录: |