1

kshスクリプトからいくつかの基本的なXML(1つのルート要素、3〜4個のサブ要素、それぞれ1〜3個の属性)を解析する必要があります(スクリプトがすでに存在し、XMLで作成された追加の構成を読み取ろうとしているだけなので、kshに固執するのが理想的です別のプログラム)。

sed を使用してパターン マッチングを実行できることはわかっていますが、入力 XML が変更される可能性があり、さまざまなサブ要素 (または新しいサブ要素) で属性が複製される可能性があることを考えると、絶対確実ではありません。

これまでのところ、XML に対して XSLT を使用して、ksh スクリプトが個別のフィールドとして扱う (特定の要素の) いくつかの属性を抽出することを考えています。私たちが DB 駆動型の製品であることを考えると、これには Oracle を使用できます。Oracle は常にシステムにインストールされますが、それは少し手間がかかるように思えます。

サードパーティのパーサー/トランスフォーマーへのアクセスを必要としない、クロスプラットフォームの方法で入力 XML から特定の属性を抽出する他の安全な方法はありますか?

4

4 に答える 4

1

「解析」の意味によっては、XMLStarletが適切なオプションになる場合があります。これは完全にコマンド ライン駆動であり、XML ファイルの選択と編集、および XSLT をサポートしています。

于 2008-10-14T18:01:16.223 に答える
1

すべてをシェルスクリプトに保持することが重要な場合は、この純粋な bash 実装を確認することをお勧めします。

とはいえ、Python や Perl などの他のスクリプト言語も移植性が高く、作業がずっと楽になります。たとえば、Perl のXML::Twig--text_onlyモジュールには、「xml_grep」と呼ばれるエンドユーザー スクリプトが付属しています。このスクリプトには、複雑な検索で見つかったノードのテキストだけを抽出するオプションがすでに渡されています。指定された属性を返すように変更することもそれほど難しくありません。

于 2008-10-11T16:29:32.713 に答える
0

kshで完全に実行することはできませんが、pythonxmlを試してください。

軽量にしたい場合は、libxml2と小さなCプログラムを試してみてください。

于 2008-09-15T13:16:38.867 に答える
0

解析に CSV を使用するのではなく、ロジックを単純化するだけでなく、xls から csv への変換も簡単に実現できます。

于 2009-12-07T11:43:41.230 に答える