格式化XML,美化打印

9

为了完整性和更好的可发现性,我链接到使用JavaScript美化XML(这可能是关于此问题的JavaScript解决方案的规范SO线程)。 - Martin
5个回答

15

嗯,您链接的身份转换对于任何XSLT处理器(Saxon、msxml等)都是可移植的。

此外,您可以查看LibXML2工具包中的xmllint--format选项允许您漂亮地打印输入。 XMLStarlet中存在类似的功能(在幕后使用LibXML2)。


2
对于字符串也非常有效:echo "<xml here>" | xmllint --format - - Matt

10

xmlstarlet fo 是我用来进行格式化输出的工具。 Xmlstarlet 有多种选项:

$ xmlstarlet fo --help
XMLStarlet Toolkit: Format XML document
Usage: xml fo [<options>] <xml-file>
where <options> are
  -n or --noindent            - do not indent
  -t or --indent-tab          - indent output with tabulation
  -s or --indent-spaces <num> - indent output with <num> spaces
  -o or --omit-decl           - omit xml declaration <?xml version="1.0"?>
  -R or --recover             - try to recover what is parsable
  -D or --dropdtd             - remove the DOCTYPE of the input docs
  -C or --nocdata             - replace cdata section with text nodes
  -N or --nsclean             - remove redundant namespace declarations
  -e or --encode <encoding>   - output in the given encoding (utf-8, unicode...)
  -H or --html                - input is HTML

一名优秀的XML工程师应该能够熟练使用xmlstarlet。

3

您可以使用http://prettydiff.com/?m=beautify工具。

不幸的是,该工具是用JavaScript编写的,但它是一个完整的应用程序,因此您不必了解任何细节。只需知道您可以在浏览器内运行,无需下载或安装任何东西。


1

我喜欢使用Java库XOM来进行XML操作。它有一个很好的Pretty Printer,可以对输出进行很多控制。


0

在使用Python中的libxml2时:

with open(pathToSaveResult, 'w') as fd:
   xmlParsed.saveTo(fd,format = libxml2.XML_SAVE_FORMAT)

编辑:看起来libxml2中有一些bug...漂亮的打印是使用标签libxml2.XML_SAVE_NO_EMPTY而不是libxml2.XML_SAVE_FORMAT完成的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接