如何从命令行打印XML?

如何从命令行打印XML?,xml,unix,command-line,perl,xidel,Xml,Unix,Command Line,Perl,Xidel,相关的: 是否有(unix)shell脚本以人类可读的形式格式化XML 基本上,我希望它能改变以下内容: <root><foo a="b">lorem</foo><bar value="ipsum" /></root> $ echo '<root><foo a="b">lorem</foo><bar value="ipsum" /></root>' | xmllint --f

相关的:

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

基本上,我希望它能改变以下内容:

<root><foo a="b">lorem</foo><bar value="ipsum" /></root>
$ echo '<root><foo a="b">lorem</foo><bar value="ipsum" /></root>' | xmllint --format -
tidy -xml -i your-file.xml > output.xml
lorem
。。。变成这样:

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

洛勒姆

xmllint

此实用程序附带:

xmlstarlet

此命令附带:

Python

Python可以格式化XML(也适用于旧式Python 2):

撒克逊河

你需要:

echo'lorem'|
java-cp/usr/share/java/saxon/saxon9he.jar net.sf.saxon.Query\
-s:--qs:/'!缩进=是'

xmllint

此实用程序附带:

xmlstarlet

此命令附带:

Python

Python可以格式化XML(也适用于旧式Python 2):

撒克逊河

你需要:

echo'lorem'|
java-cp/usr/share/java/saxon/saxon9he.jar net.sf.saxon.Query\
-s:--qs:/'!缩进=是'

您没有提到文件,因此我假设您希望在命令行上提供XML字符串作为标准输入。在这种情况下,请执行以下操作:

<root><foo a="b">lorem</foo><bar value="ipsum" /></root>
$ echo '<root><foo a="b">lorem</foo><bar value="ipsum" /></root>' | xmllint --format -
tidy -xml -i your-file.xml > output.xml
$echo'lorem'| xmllint--格式-

您没有提到文件,因此我假设您希望在命令行上提供XML字符串作为标准输入。在这种情况下,请执行以下操作:

<root><foo a="b">lorem</foo><bar value="ipsum" /></root>
$ echo '<root><foo a="b">lorem</foo><bar value="ipsum" /></root>' | xmllint --format -
tidy -xml -i your-file.xml > output.xml
$echo'lorem'| xmllint--格式-
xmllint——格式化您的xmlfile.xml

是一个命令行XML工具,包含在
libxml2
()中

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

注意:如果未安装
libxml2
,则可以通过执行以下操作进行安装:

<root><foo a="b">lorem</foo><bar value="ipsum" /></root>
$ echo '<root><foo a="b">lorem</foo><bar value="ipsum" /></root>' | xmllint --format -
tidy -xml -i your-file.xml > output.xml
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安装libxml2 utils

Cygwin

apt cyg安装libxml2

MacOS

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
要使用自制软件在MacOS上安装此软件,只需执行以下操作:
brew安装libxml2

Git

如果您需要以下代码,也可以在Git上获得:
git克隆git://git.gnome.org/libxml2

xmllint——格式化您的xmlfile.xml

是一个命令行XML工具,包含在
libxml2
()中

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

注意:如果未安装
libxml2
,则可以通过执行以下操作进行安装:

<root><foo a="b">lorem</foo><bar value="ipsum" /></root>
$ echo '<root><foo a="b">lorem</foo><bar value="ipsum" /></root>' | xmllint --format -
tidy -xml -i your-file.xml > output.xml
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安装libxml2 utils

Cygwin

apt cyg安装libxml2

MacOS

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
要使用自制软件在MacOS上安装此软件,只需执行以下操作:
brew安装libxml2

Git

如果您需要以下代码,也可以在Git上获得:
git克隆git://git.gnome.org/libxml2

您也可以使用,这可能需要先安装(例如在Ubuntu上:sudo
apt get install tidy

为此,您将发布如下内容:

<root><foo a="b">lorem</foo><bar value="ipsum" /></root>
$ echo '<root><foo a="b">lorem</foo><bar value="ipsum" /></root>' | xmllint --format -
tidy -xml -i your-file.xml > output.xml
注意:有许多额外的可读性标志,但分词行为有点烦人()。

您也可以使用,可能需要先安装(例如在Ubuntu:sudo
apt get install tidy

为此,您将发布如下内容:

<root><foo a="b">lorem</foo><bar value="ipsum" /></root>
$ echo '<root><foo a="b">lorem</foo><bar value="ipsum" /></root>' | xmllint --format -
tidy -xml -i your-file.xml > output.xml
注意:有许多额外的可读性标志,但分词行为有点烦人()。

:

正如Daniel Veillard所写:

我想
xmllint-o tst.xml——格式为tst.xml
应该是安全的,因为解析器会将输入完全加载到树中 在打开输出对其进行序列化之前

缩进级别由
XMLLINT_Indent
环境变量控制,该变量默认为2个空格。示例如何将缩进更改为4个空格:

XMLLINT_INDENT='    '  xmllint -o out.xml --format in.xml
当XML文档被破坏时,您可能缺少使用
--recover
选项。或者尝试使用具有严格XML输出的弱HTML解析器:

xmllint --html --xmlout <in.xml >out.xml
:

正如Daniel Veillard所写:

我想
xmllint-o tst.xml——格式为tst.xml
应该是安全的,因为解析器会将输入完全加载到树中 在打开输出对其进行序列化之前

缩进级别由
XMLLINT_Indent
环境变量控制,该变量默认为2个空格。示例如何将缩进更改为4个空格:

XMLLINT_INDENT='    '  xmllint -o out.xml --format in.xml
当XML文档被破坏时,您可能缺少使用
--recover
选项。或者尝试使用具有严格XML输出的弱HTML解析器:

xmllint --html --xmlout <in.xml >out.xml
没有在macOS/most Unix上安装任何东西。 使用
tidy

cat filename.xml | tidy-xml-iq

使用cat重定向查看文件以指定xml的文件类型,并在安静输出时缩进将抑制错误输出。JSON还可以与
-JSON

一起使用,而无需在macOS/most Unix上安装任何东西。 使用
tidy

cat filename.xml | tidy-xml-iq


使用cat重定向查看文件以指定xml的文件类型,并在安静输出时缩进将抑制错误输出。JSON也适用于
-JSON

这让我花了很长时间才找到在我的mac电脑上工作的东西。以下是对我有效的方法:

brew install xmlformat
cat unformatted.html | xmlformat

我花了很长时间才在我的mac电脑上找到了工作的东西。以下是对我有效的方法:

brew install xmlformat
cat unformatted.html | xmlformat
编辑:

免责声明:您通常应该更喜欢安装一个成熟的工具,如
xmllint
来完成这样的工作。XML/HTML可能是一个可怕的残缺不全的烂摊子。然而,在一些有效的情况下,使用现有工具比手动安装新工具更可取,而且XML的源代码是有效的(足够了)。我已经为其中一个案例编写了这个脚本,但它们很少见,所以请谨慎行事