2016-06-17 11 views
-1

nのXML設定ファイルを一連のルールと比較した結果を示すインテリジェントなレポートを作成しようと考えています。XMLのオブジェクトを2つ比較すると、

a.b.Default.StartTime=00:00:00 
a.b.Default.SomePath:exists 
a.b.Default.BeginString:value_a|value_b 

私は3つのアサーションの種類を推進しています:

  1. 任意の値を持つキーがある特定の値
  2. を持っているキーがあります。キー必見存在し、何かが
  3. それに割り当てる必要があります

を値Aまたは値のいずれかBを持っているキーは、私は優雅にこれを処理するために使用できるライブラリがそこにあるのですか?

Perlに対する任意の方向、Pythonは最も

+0

これはどれくらいライブラリから期待していますか? XMLをきれいに、さまざまな方法で解析するには、そういうものがあります。私はライブラリがこの特定の機能を持つことは期待しません。明確にすることはできますか? – zdim

答えて

1

をいただければ幸いあなたは多分のXMLスキーマ検証ツールを通して、あなたのxmlを実行することができます。 Pythonを使用している場合は、lxmlライブラリでサポートされています。 xmlスキーマの詳細については、hereを参照してください。

xmltodictなどのライブラリを使用してxmlデータをPython辞書に読み込んだ後、cerberusバリデーションスキーマを実行することもできます。

+1

Perl側では、XML :: LibXMLをスキーマの検証に使用できます。 – ikegami

1

PerlライブラリXML::LibXMLおよびXML::Twigは、XMLの処理にはお勧めできません。彼らはXMLを解析し、あなたが作業できるPerlデータ構造を渡します。

のドキュメントlibxml2へのインターフェイスを提供するXML::LibXMLのドキュメントは、いくつかの別々のページで利用できます。最初にXML::LIbXML::Readerを参照するとよいでしょう。これは、ツリー全体を読み込むのではなく、ドキュメントストリームを繰り返し処理するプルパーサーで、おそらくXPath contextSchema validationのものです。

XML::Twigは小さなドキュメントをツリーとして読み込むことも、結合されたストリーム/ツリーモードで "巨大な"ものを処理することもできます。 xmltwig.orgには多くの(追加の)文書があります。

これらのモジュールは両方とも本格的な真のXMLライブラリです。一つは、どちらもXPath expressionsをよく利用し、特定の特性や値を持つエレメンツの文書を検索するのに役立ちます。

関連する問題