带有两个主要标签的xmlstarlet格式

时间:2012-07-26 12:52:20

标签: formatting xmlstarlet

我正在尝试使用xmlstarlet格式化此文件

文件:

<file_info>
<name><OUTFILE_0/></name>
<generated_locally/>
<upload_when_present/><max_nbytes>99999999999999999999999999999999999</max_nbytes><url><UPLOAD_URL/></url>
</file_info>
<result>
<file_ref><file_name><OUTFILE_0/></file_name>
<open_name>output</open_name>
<copy_file/></file_ref>
</result>

命令: xmlstarlet fo --indent-tab --omit-decl templates / newApp_re_novo.xml&gt;模板/ newApp_re.xml

我收到此消息:templates / newApp_re_novo.xml:1.145:文档末尾的额外内容 9999999999999999999999999999999

我认为这是因为我有两个主要标签:和 但我需要这样的文件。我该怎么办?

感谢。 菲利普

1 个答案:

答案 0 :(得分:1)

有效的XML文档始终只有一个根节点,而xmlstarlet只能处理有效的XML文档。一些前后处理可以解决这个问题:

{ echo '<R>'; cat forest.xml; echo '</R>'; }      | # make into a proper tree
xmlstarlet fo --indent-tab                        | # indent
xmlstarlet sel -t -c /R/file_info -n -c /R/result | # break apart into a forest
sed 's/^\t//'                                       # remove extra indentation