Formatting 带有两个主标记的xmlstarlet格式
我正在尝试使用xmlstarlet格式化此文件 文件:Formatting 带有两个主标记的xmlstarlet格式,formatting,xmlstarlet,Formatting,Xmlstarlet,我正在尝试使用xmlstarlet格式化此文件 文件: <file_info> <name><OUTFILE_0/></name> <generated_locally/> <upload_when_present/><max_nbytes>99999999999999999999999999999999999</max_nbytes><url><UPLOAD_URL/><
<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>
99999999999999999999999999999999999
输出
命令:
xmlstarlet fo--indent选项卡--省略decl templates/newApp_re_novo.xml>templates/newApp_re.xml
我收到以下消息:templates/newApp_re_novo.xml:1.145:文档末尾的额外内容
999999999999999999999999999999999999
我想这是因为我有两个主要标签:和
但我需要这样的文件。我能做什么
谢谢。
Felipe一个有效的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
{echo';cat forest.xml;echo'}|#生成适当的树
xmlstarlet fo—缩进选项卡|#缩进
xmlstarlet sel-t-c/R/file_info-n-c/R/result |#分解成一片森林
sed's/^\t/'#删除额外缩进