0

シェルスクリプト(Linux、bash、#!/ bin / sh)には、次のようなXMLデータを含む変数があります。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<interface>
    <objects retrieved="0" total="0"/>
</interface>

このデータを取得するときにすでにいくつかのエラー処理が行われているので、実際の質問に焦点を合わせてください。そして問題は、「オブジェクト」要素の属性データ(「取得済み」という名前)を読み取る簡単で効果的な方法です。0または1にすることができます(他には何もありません)。正規表現と外部プログラムを使用したXML解析の2つのオプションがあると思います。しかし、どちらを選ぶべきですか?前もって感謝します。

4

2 に答える 2

1

あなたxmlstarletはattrを取得するために使用することができます:

$ xmlstarlet sel -t -m //objects -v @retrieved input.xml
0

または

$ xmlstarlet sel -t -m //objects/@retrieved -v . input.xml

-m or --match <xpath>     - match XPATH expression
-v or --value-of <xpath>  - print value of XPATH expression
于 2012-04-13T09:39:41.173 に答える
1

どちらも良い選択です。スクリプトを外部プログラムから独立させるという厳密な選択が必要な場合は、正規表現を使用する方が良いと思います。正規表現を使用すると、外部プログラムを使用するよりもプログラムの機能が速くなる場合があります。

ただし、特に時間が少なく、作成する正規表現が複雑な場合は、正規表現を使用することが常に実行可能なオプションであるとは限りません。外部プログラムはその時だけのオプションです。このスクリプトを別のコンピューターに移動する場合、この外部プログラムによって依存関係やオーバーヘッドが発生する可能性があります。

正規表現を提案します。これらはあなたを助けるかもしれません。見てください。

シェルスクリプトを使用してXMLを解析する方法は?

  • これは本当に役に立ちます

そして、これは内容にいくつかのアイデアがあります。

http://silveiraneto.net/2010/05/13/substitution-on-a-xml-file-shell-script-snippet/

于 2012-04-13T09:42:29.803 に答える