当前位置: 首页 > 知识库问答 >
问题:

如何从命令行打印XML?

娄丁雨
2023-03-14

相关:如何在(unix)shell脚本中漂亮地打印JSON?

是否有(unix)shell脚本以人类可读的形式格式化XML?

基本上,我想让它转换以下内容:

<root><foo a="b">lorem</foo><bar value="ipsum" /></root>

...变成这样的东西:

<root>
    <foo a="b">lorem</foo>
    <bar value="ipsum" />
</root>

共有3个答案

袁炳
2023-03-14

您还可以使用tidy,它可能需要首先安装(例如在Ubuntu:sudoapt-get install tidy)。

为此,您可以发出如下内容:

tidy -xml -i your-file.xml > output.xml

注意:有许多额外的可读性标志,但是换行行为对解开tangle来说有点烦人(http://tidy.sourceforge.net/docs/quickref.html)。

武晨
2023-03-14

xmllint--格式化yourxmlfile.xml

xmllint是一个命令行XML工具,包含在libxml2(http://xmlsoft.org/)中。

==========================================================================

注意:如果您没有安装libxml2,您可以通过执行以下操作来安装它:

CentOS

cd /tmp
wget ftp://xmlsoft.org/libxml2/libxml2-2.8.0.tar.gz
tar xzf libxml2-2.8.0.tar.gz
cd libxml2-2.8.0/
./configure
make
sudo make install
cd

Ubuntu

sudo apt-get install libxml2-utils

小天鹅

apt-cyg安装libxml2

MacOS

要使用Homebrew在MacOS上安装此功能,只需执行以下操作:brew install libxml2

吉特

如果需要代码,也可以在Git上获得:Git clone Git:/Git.gnome.org/libxml2

蔡明贤
2023-03-14

libxml2-utils

此实用工具随libxml2-utils:

echo '<root><foo a="b">lorem</foo><bar value="ipsum" /></root>' |
    xmllint --format -

Perl的xml::twig

此命令随xml::twig perl模块一起提供,有时是xml-twig-tools包:

echo '<root><foo a="b">lorem</foo><bar value="ipsum" /></root>' |
    xml_pp

XMLStarlet

此命令随XMLStarlet一起提供:

echo '<root><foo a="b">lorem</foo><bar value="ipsum" /></root>' |
    xmlstarlet format --indent-tab

整洁

检查tidy包:

echo '<root><foo a="b">lorem</foo><bar value="ipsum" /></root>' |
    tidy -xml -i -

巨蟒

Python的XML.dom.minidom可以格式化XML(python2和python3):

echo '<root><foo a="b">lorem</foo><bar value="ipsum" /></root>' |
    python -c 'import sys;import xml.dom.minidom;s=sys.stdin.read();print(xml.dom.minidom.parseString(s).toprettyxml())'

saxon-lint

您需要saxon-lint:

echo '<root><foo a="b">lorem</foo><bar value="ipsum" /></root>' |
    saxon-lint --indent --xpath '/' -

Saxon-He

您需要saxon-he:

 echo '<root><foo a="b">lorem</foo><bar value="ipsum" /></root>' |
    java -cp /usr/share/java/saxon/saxon9he.jar net.sf.saxon.Query \
    -s:- -qs:/ '!indent=yes'
 类似资料:
  • 问题内容: 我有一个带有JSON元素序列的文件: 是否有一个Shell脚本来格式化JSON以以可读形式显示文件内容? 我看过这篇文章,我认为这是一个很好的起点! 我的想法是迭代文件中的行,然后: 还有其他想法吗? 问题答案: 将文件中的结果通过管道传输到python json工具2.6及更高版本

  • 当在下面运行时,将打开代码提示符,并显示java版本信息。我想打印java版本信息。请帮帮我

  • 例子 $ gcc -### foo.c Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.6/lto-wrapper Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgvers

  • 问题内容: 在Unix上,我可以使用\r(回车\b键)或(退格键)覆盖Shell中的当前行(在已经可见的文本上打印)。 我可以通过Python脚本在Windows命令行中实现相同的效果吗? 我尝试了curses模块,但Windows上似乎不可用。 问题答案: 是:

  • Selenese 有一个简单的命令可以在测试时打印输出文本。当测试在运行时,在控制台中打印显示测试中的信息,这个功能往往是非常有用的。这些信息可以用来提供测试上下文的结果报告,当你在测试中发现问题时,这个结果报告经常用来报告测试页面时发现的缺陷。最后,还可以使用 echo 语句打印 Selenium 变量的内容。

  • 我正在使用DHL Shipping(XML)API请求DHL发货并自动打印响应的发货标签。 系统是这样工作的: DHL响应XML包含base64编码的pdf,其中包含: 第1页。装运标签(打印在包装上的标签上) 第2页。存档文件(需要单独打印并交给快递员) 为了分离这两个PDF,我首先解码base64,然后使用PDFBox命令行工具执行PDFSplit,最后在各自的打印机上打印各自的文档: 问题是