2016-05-08 4 views
0

serverlist.xmlでネストされたタグを検索しているシェルスクリプトが必要です。スクリプトはpingタグを検索する必要があります。 pingの値が0より大きい場合、タグ "numplayers"の値は1つ多くなければなりません。 pingタグが0の場合、タグ "numplayers。XML:特定の値を検索して他の値を書き直す

などの値を上げるべきではありません。このxmlファイルには、サーバー1の名前タグ" hansfrans "がping値を持つためnumplayersタグを数えます"30"であるが、名前タグ "E.Krenz^GDR"を持つプレイヤーは、ping値が "0"であるためカウントしないでください

例:サーバー2にはping 0のプレイヤーが2人いるため、numplayersの値は0 。

serverlist.xmlは、サーバの乱数を持っているので、それはすべてのサーバー自体のnumplayers値をカウントしなければなりません。

serverlist.xml

<qstat> 
<server> 
<hostname>1.2.3.4:27965</hostname> 
<name>Server 1</name> 
<gametype>type1</gametype> 
<map>q3dm13</map> 
<numplayers>2</numplayers> 
<maxplayers>14</maxplayers> 
<numspectators>0</numspectators> 
<maxspectators>0</maxspectators> 
<retries>0</retries> 
    <players> 
<player> 
<name>hansfrans</name> 
<score>27</score> 
<ping>30</ping> 
</player> 
<player> 
<name>E.Krenz^GDR</name> 
<score>16</score> 
<ping>0</ping> 
</player> 
    </players> 
</server> 

<server> 
<hostname>2.3.4.5:27964</hostname> 
<name>Server 2</name> 
<gametype>type 1</gametype> 
<map>q3dm1</map> 
<numplayers>2</numplayers> 
<maxplayers>16</maxplayers> 
<numspectators>0</numspectators> 
<maxspectators>0</maxspectators> 
<retries>0</retries> 
    <players> 
<player> 
<name>G.Schroeder^GER</name> 
<score>17</score> 
<ping>0</ping> 
</player> 
<player> 
<name>H.Kohl^GER</name> 
<score>45</score> 
<ping>0</ping> 
</player> 
    </players> 
</server> 
</qstat> 

ありがとうございました。

+1

は私達にあなたの可能な解決策を提示してください。 – sjsam

+0

xml_grep ping serverlist.xmlもっと現時点ではありません – hansfrans

+0

grep -c '' serverlist.xmlを使用すると、すべてping 0でカウントされます。これですべてのサーバー(サーバータグの間) 。どのようにこれを行うにはどのようなアイデア? – hansfrans

答えて

0

の文書に対して、xmllintを使用できます。少なくともDTD, RELAX NG and XML Schema formatsに対応しています。

にあなたがxsltprocを使用することができ、文書を変更します。

xsltproc --output output.xml transform.xslt serverlist.xml 

に抽出ノードを文書からあなたもxmllintを使用することができます。

$ xmllint --xpath "//name" serverlist.xml 
<name>Server 1</name><name>hansfrans</name><name>E.Krenz^GDR</name><name>Server 2</name><name>G.Schroeder^GER</name><name>H.Kohl^GER</name> 
+0

Mhmmこれは本当に私を助けません。 – hansfrans

関連する問題