我目前正在处理包含具有一长串属性的元素的 XML 文件。当我尝试xmllint --format myfile.xml
仅使用缩进的元素重新缩进整个 XML 文件时,属性仍然保留在一行中。
是否有一些(命令行、Windows 或 GNU/Linux)程序支持重新格式化 XML (包括属性)?
例如如下的 XML:
<root>
<node attribute1="some long attribute value" attribute2="some long attribute value" attribute3="..."/>
</root>
应输出类似以下内容:
<root>
<node attribute1="some long attribute value"
attribute2="some long attribute value"
attribute3="..."/>
</root>
答案1
虽然您善意地寻找“命令行工具”完全没问题,但不幸的是,我认为任何真正可行的解决方案都需要您自己编写一些代码,或者至少利用现有代码(例如 XML 解析器/生成器)。在评论中,发布了一些您可以尝试的方法,这些方法可能会或可能不会让您获得您想要的确切格式样式。如果它真的很接近但不完全,您最好的选择可能是编辑“几乎”到达那里的程序的源代码。当然,如果您不懂任何编程语言,这可能会有点陷入僵局。
我称所有这些解决方案都是“可能的”,因为即使它们按照你想要的方式格式化属性,它们也可能会格式化某些东西别的在某种程度上不想要,然后你又回到原点。由于你没有说明你的全部转换要求,我只能猜测其中哪些是你可以接受的,所以你只能一个接一个地尝试,直到你偶然发现一些可行的方法,或者利用现有代码并编写一个小程序自己创建它。
无需编程的可能解决方案
图形用户界面
蚀XML 源编辑器
漂亮之前: 漂亮之后:
可自定义选项来更改格式规则:
命令行
编程可能的解决方案
- 使用下列方法之一编写您自己的自定义程序:
- 薛西斯
- Dom4j
- 萨克斯
- 库
- Eclipse 用于解析 XML 的底层库,可能允许您以编程方式格式化 XML 并设置自定义格式规则,如 Eclipse 选项中所示
...它按照您希望的方式处理 XML。
也可以看看这那么有疑问。
最后,请注意,如果你想要社区帮助,深入研究编写涉及这些技术之一的程序,你应该提出针对以下问题的具体问题:一选择的 XML 解析器/生成器/库堆栈溢出和不是在 SuperUser 上。我们主要在这里处理有关现有程序使用的问题。