0

この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」言語の場合はenタイトルを取得し、それ以外の場合は「it」タイトルを取得したいと思います。次を使用して、PoiBeanのタイトル値を設定できます。

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");
...

でもそれが英語のタイトルなのかイタリア語のタイトルなのかはわかりません。

4

2 に答える 2

3

わかりました-何よりもまず、XMLパーサーを使用してRDF/XMLを解析しようとしないでください。XMLドキュメントのセマンティクスはRDF/XMLとは無関係であり、特にRDF / XMLが動的に生成されている場合は、(RDF / XMLがどのように機能するかを知っている場合)悪い考えであるため、これは機能しません。 (名前空間でわかります)。RDFを解析するには、RDFパーサーを使用する必要があります。

つまり、XMLからJavaオブジェクトへのマッピングツールを使用せず、RDFからJavaオブジェクトへのマッピングツールを使用することを意味します。

これを行う方法を説明する素晴らしいリンクは次のとおりです。

そして別の:

前述のリソースのすべてのツールへのリンクとともに:

アウトとアウトのRDFパーサーについては、イエナを見てください。

これはApacheプロジェクトであり、Mavenもうまく機能しています。

于 2012-02-26T22:13:14.003 に答える
1

CommonsDigesterのFAQには次のように書かれています。

時折、属性の値に基づいて要素のルールを実行する方法を尋ねられることがあります

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

子ルールを持つカスタムの「フィルタリング」ルールを作成し、適切な条件が設定されている場合にのみその子ルールを実行できる場合があります。ただし、そのようなソリューションの例はありません。

ダイジェスターはあまり良いツールではありません。単純すぎます。StAXなどのより包括的なイベントベースのAPIの使用を検討してください。

于 2012-02-26T16:16:07.283 に答える