属性

2012-02-26 10 views
0

とXMLに私はこのXML/RDFから値を抽出するつもりです:属性

<?xml version="1.0" encoding="UTF-8"?> 
<rdf:RDF 
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
    xmlns:j.0="urn:turismoculturale.itdc.filas-1.0.0-RC1#"> 
<j.0:Chiesa rdf:ID="turismoCulturale_POI_880"> 
    <j.0:title xml:lang="en">Church of S. Giuda Taddeo or S. Onofrio - Gaeta</j.0:title> 
    <j.0:title xml:lang="it">Chiesa S. Giuda Taddeo o S. Onofrio - Gaeta</j.0:title> 
</j.0:Chiesa> 
</rdf:RDF> 

私はEN」にいるときタイトルエン取得したいと思い"それ以外の場合は"それ "という言葉を使用します。私が使ってポイ豆のタイトル値を設定することができる午前:

Digester digester = new Digester(); 
digester.setNamespaceAware(true); 
digester.setRuleNamespaceURI("urn:turismoculturale.itdc.filas-1.0.0-RC1#"); 
digester.addObjectCreate("*/Chiesa", Poi.class); 
digester.addBeanPropertySetter("*/title", "title"); 
... 

しかし、それは、英語タイトルやイタリアの1である場合、私は知りません。

答えて

3

最初に、XMLパーサーでRDF/XMLを解析しようとしないでください。 XML文書のセマンティクスはRDF/XMLに関しては無関係であり、特にRDF/XMLが動的に生成されている場合には(RDF/XMLの仕組みを知っていれば)悪い考えです(あなたは名前空間で知ることができます)。 RDFを解析するには、RDFパーサを使用する必要があります。

つまり、XMLからJavaへのオブジェクトマッピングツールを使用しないようにするには、RDFからJavaオブジェクトへのマッピングツールを使用します。ここで

これを行う方法を説明する偉大なリンクです:

別:すべてへのリンクとともに

thのツールE上述リソース:Oに

RDFパーサから、イエナでUTと見て:

また、きれいにMaven'edさApacheプロジェクトです。

1

Commons Digester FAQは言う:

時々、人々は、属性の値に基づいて、要素のためのルールを発射できるか尋ねる

Digesterにこれを行うための簡単な方法はありません。組み込みのルールマッチングエンジンは、要素名を照合する機能しか提供しません。 XPath式のサポートがありません

子ルールを持つカスタムの「フィルタリング」ルールを作成し、適切な条件が設定されている場合にのみその子ルールを起動することができます。しかし、そのような解決策の例はありません。

Digesterはあまり良いツールではありません。それはあまりにも単純です。 StAXなど、より包括的なイベントベースのAPIの使用を検討してください。