2017-10-05 5 views
0

タグ名が固定されているXMLを解析するのは簡単です。 XStreamでは、単に@XStreamAlias("tagname")アノテーションを使用できます。しかし、タグ名が固定されていないXMLを解析する方法。そのような場合には、タグresult2ためのPOJOを定義する方法タグ名が固定されていないXMLを解析する

など、

<result> 
    <result1> 
    <fixed1> ... </fixed1> 
    <fixed2> ... </fixed2> 
    </result1> 
    <result2> 
    <item> 
    <America> 
     <name> America </name> 
     <language> English </language> 
    </America> 
    </item> 
    <item> 
    <Spain> 
     <name> Spain </name> 
     <language> Spanish </language> 
    </Spain> 
    </item> 
    </result2> 
</result> 

タグ名AmericaSpainが固定されていないと、時々私はドイツ、インドのような他のタグ名を取得することがあります。私は、XMLを次していると仮定?タグ名が手で知られていない場合、XStreamにエイリアス名として何かを受け入れるよう指示する方法はありますか?

+3

この場合、タグ名は実際は国名にする必要があります。これはただのばかです。 (私はあなたのせいではないと言っている) –

+0

はい。私は別のパーティーからこれを取得しています。だからそれを変更することはできません。 –

+0

これを変更することができます。xsltを使って、あまり狂気のないものに変換してください。 –

答えて

0

あなたは、XPathを使用して、タグ自体(フィールドの「name」)の内側からタグを取得することがOKであれば、あなたが行うことができます:

//result2/*/name/text() 

別のオプションは、全体の要素を使用することができ、以下のような:

//result2/* 

かも:

//result2/*/name() 
+0

あなたはいくつかのコードスニペットを説明できますか? –

+0

ちょうどこれを読んで:https://stackoverflow.com/questions/2811001/how-to-read-xml-using-xpath-in-javaとルールは、ここで簡単に説明:https://www.freeformatter.com/ xpath-tester.htmlこの最後のリンクでは、パターンを評価することもできます – marco

0

いくつかの技術を(具体的には、アプローチをデータバインディング)は、取り扱いのために最適化されていますコンパイル時に構造が分かっているXML。他のもの(DOMや他のDOMのようなツリーモデル(JDOM、XOMなど)など)は、あらかじめ構造が分からないXMLを扱うように設計されています。このツールを使用してジョブを実行します。

XSLTとXQueryは、両方をブレンドします。スキーマ認識形式では、使用可能な静的構造情報を利用できます。しかし、より一般的には、要素名や構造の先験的な知識がない「型指定なし」モードで実行され、すべてが処理されます。 XSLTルールベースの処理パラダイムは、コンテンツが予測不可能または可変である「半構造化」XMLに特に適しています。

関連する問題