0

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 > templates/newApp_re.xml

そして、次のメッセージを受け取りました: templates/newApp_re_novo.xml:1.145: Extra content at the end of the document 999999999999999999999999999999

これは、2 つの主なタグがあるためだと思います: と しかし、このようなファイルが必要です。どうすればよいですか?

ありがとう。フェリペ

4

1 に答える 1

2

有効な 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
于 2012-07-27T13:39:52.823 に答える