【发布时间】:2016-02-06 23:37:44
【问题描述】:
我正在编写一个 unix shell 脚本,我需要在其中漂亮地打印 XML 文件, 但问题是它们的某些部分我可能不会碰。 即,它们是包含在 XML 中的 Apache Jelly 脚本 我需要漂亮打印的文件。所以我需要转换这个
<proc source="customer"><scriptParam value="_user"/><scriptText><jelly:script>
<jelly:log level="info">
this text needs
to keep its indent level
and this is none of my business
</jelly:log>
<!-- get date -->
<sql:query var="rs"><![CDATA[
select sysdate
from dual
]]></sql:query>
</jelly:script>
</scriptText></proc>
进入这个
<proc source="customer">
<scriptParam value="_user"/>
<scriptText>
<jelly:script>
<jelly:log level="info">
this text needs
to keep its indent level
and this is none of my business
</jelly:log>
<!-- get date -->
<sql:query var="rs"><![CDATA[
select sysdate
from dual
]]></sql:query>
</jelly:script>
</scriptText>
</proc>
请注意,jelly:script 元素的唯一更改是换行符
在它之前。
我在 xmllint 或 xmlstarlet 中找不到任何选项来忽略
某种元素。有什么工具可以帮助我实现这一目标吗?我上线了
Linux,如果重要的话。
【问题讨论】:
-
“但问题是它们的某些部分我可能无法触及。” - 我认为这不符合
xmlstarlet、xmllint以及可能大多数基于 XML 解析器的工具的资格。否则我会有suggestedxmlstarlet ed。
标签: xml shell formatting xmlstarlet xmllint