如何格式化具有长属性列表的 XML 文件?

ble*_*tin 8 xml indentation command-line

我目前正在处理包含具有一长串属性的元素的 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>
Run Code Online (Sandbox Code Playgroud)

应该输出类似于:

<root>
  <node attribute1="some long attribute value"
        attribute2="some long attribute value"
        attribute3="..."/>
</root>
Run Code Online (Sandbox Code Playgroud)

all*_*tic 4

虽然您善意地搜索“命令行工具”是完全可以的,但不幸的是,我认为解决此问题的任何真正可行的解决方案都将涉及您自己编写一些代码,或者至少利用现有代码(例如 XML 解析器/发电机)。在评论中,发布了一些您可以尝试的内容,这些内容可能会或可能不会为您提供您正在寻找的确切格式样式。如果它确实很接近但不完全,那么您最好的选择可能是编辑“几乎”到达那里的程序的源代码。当然,如果您不懂任何编程语言,那可能会有点僵局。

我将所有这些解决方案称为“可能的”,因为即使它们按照您希望的方式格式化属性,它们也可能以您不想要的方式格式化其他内容,然后您又回到了第一个地方。由于您没有说明完整的转换要求,我只能猜测您可以接受其中哪一个,因此您只需逐一尝试,直到您偶然发现可行的东西或自己创建它通过利用现有代码并编写一个小型程序。

无需编程的可能解决方案

图形用户界面

命令行

  • XMLTidy(最后更新于 2005 年;可能已过时)
  • Dom4j(包含在此处是因为“编程”已在 SO 答案中完整地提供给您)

可能的编程解决方案

  • 使用以下之一编写您自己的自定义程序:
  • 薛西斯
  • 多姆4j
  • 萨克斯管
  • 库文件
  • Eclipse 用于解析 XML 的底层库,它可能允许您以编程方式格式化 XML 并设置自定义格式化规则,如您在 Eclipse 选项中看到的那样

...它完全按照您想要的方式处理 XML。

另请参阅这个问题。

最后,请注意,如果您需要社区帮助深入研究编写涉及其中一种技术的程序,您应该在StackOverflow不是SuperUser上询问特定于所选XML 解析器/生成器/库的问题。在这里,我们主要处理有关现有程序使用的问题。