-1

編集:とにかく助けてくれてありがとう、それを忘れて..私はJavaを使用してサーバー上でxmlを直接解析し、サーバーから直接デバイスにダウンロードします...その方が簡単で高速です...

誰かが sed コマンドを手伝ってくれますか? 私はそれがあまり得意ではありません:)

私は行を削除し<title lang="en">、「pt」行のみを許可しました..(デバイスの制限)
これはすでに行っており、次のように正常に機能しています:

sed -i '/<title lang=\"en\">/d' xmltv_clarotv.xml 

今、私は私が言ったコードを実行しようとしており、さらにコンテンツを取得して 、次のような結果になるはず<date></date>です 。コマンドを使用する必要があり、実行するデバイスにはRAMとネイティブ機能があまりありません... <title lang="pt">
<title lang="pt">[2011] Gigantes de Aço</title><programme><date>
sed

それを解析するデバイスは「タイトル」と「説明」フィールドしか認識しないので、私はそれをしようとしています...

xml の一部:

<programme start="20120923200000 -0300" stop="20120923222500 -0300" channel="T4H" program_id="0000278093" event_id="000000000887005" series_key="">
<title lang="pt">Gigantes de Aço</title>
<title lang="en">Real Steel</title>
<desc>Viva a adrenalina e o frenesi de uma atividade como a luta de Robôs. Esta é a história de um ex-campeão de boxe que, empurrado pelo forte desejo de uma criança, volta ao mundo da luta como um misterioso andróide. - www.revistaeletronica.com.br </desc>
<credits>
<director>Shawn Levy</director>
<actor>Hugh Jackman</actor>
<actor>Dakota Goyo</actor>
<actor>Evangeline Lilly</actor>
<actor>Anthony Mackie</actor>
<actor>Kevin Durand</actor>
<actor>Hope Davis</actor>
</credits>
<date>2011</date>
<category lang="pt">Filme</category>
<category lang="pt">Ação</category>
<country>EUA/Índia</country>
<video>
<colour>yes</colour>
</video>
<rating system="Advisory">
<value>Programa impróprio para menores de 14 anos</value>
</rating>
<star-rating>
<value>4/5</value>
</star-rating>
</programme>
4

3 に答える 3

1

仕事に適したツールを使用してください。正規表現は、Xml を処理するための適切なツールではありません。

于 2012-09-24T03:42:36.327 に答える
0

私はあなたが望む方法XSLTを再現するために使用すると思いXMLます。(Ecpliseこれを実現するための優れたXSLTエンジンがあります)。

チュートリアル

仕事に適したツールを使用してください。正規表現は、Xmlを処理するための適切なツールではありません。(Pawelless、2012)

于 2012-09-24T03:47:48.537 に答える
0

これはうまくいくかもしれません(GNU sed):

sed '/^<programme/,/^<\/programme>/!b;/^<programme/{h;d};/^<title lang="en"/d;H;/^<\/programme>/!d;x;s/\(<title[^>]*>\)\(.*<date>\(.*\)<\/date>\)/\1[\3] \2/' file

基本的に、タグ間の行を保存しprogramme、英語のタイトルを削除し、残りのタイトルを日付で修正する (または修正しない) 必要があります。

説明:

  • /^<programme/,/^<\/programme>/!bプロセスprogrmameラインのみ
  • /^<programme/{h;d}最初の行で、ホールド スペース (HS) 内のすべてを上書きして削除します。
  • /^<title lang="en"/d英語のタイトルを削除
  • H他のすべての行を HS に追加します
  • /^<\/programme>/!d最後の行を除くすべての行を削除
  • xパターン空間 (PS) を HS と交換する
  • s/\(<title[^>]*>\)\(.*<date>\(.*\)<\/date>\)/\1[\3] \2/タイトルを修正
于 2012-09-24T06:50:19.763 に答える