2011-11-04 10 views
9

URI参照からXMLノードを抽出しようとしています。このURI参照は、XAdES4j署名者によって生成され、同じXMLファイル内または同じフォルダ内のノードを参照できます。Java XMLの参照URIを使用して外部リソースをロードする方法

私は参照をロードすると、しかし、これはちょうど私には有用なメッセージを持つ、NullPointerExceptionを与える

XMLSignatureInput referencedXML = ResourceResolver.resolveStatic(referenceNode.getAttributeNode("URI"), referenceDoc.getBaseURI()); 

のような単純なものであろうと期待していました。どちらの引数もnullではなく、URI属性が "data.xml"で、referenceDocベースURIが "/Users/ryan/.../test-files/signature.xml"でした。同じテスト・ファイルのディレクトリ。

URIは、ファイル内の要素を指すことができたので、私は私が!

を見逃している何。私のためにその複雑さを扱う参照ローダーがある願っています編集:

私がロードしようとしている参照がある:

<ds:Reference Id="xmldsig-c6050e36-d9e7-46d9-ac5f-447d1bbb405f-ref0" URI="lote.xml" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
+1

NullPointerExceptionのスタックトレースは何ですか?たぶんその内部的なエラー。 –

+0

使用しているURIの例を教えてください。 – heneryville

+0

質問:XMLの上端にリンクとしてインポートされたURIはありますか?もしそうなら、Xalan/Xercesが自動的に参照をインポートするので、アクセス可能でなければなりません。 - 私は別のファイルを使っていくつかのxslファイルを作成しました。 - URIがフォームファイルにある場合://ファイル参照を作成し、それを新しい文書として開くのはなぜでしょうか? –

答えて

1

暗闇の中で総スタブ(あなたは本当にスタックトレースを貼り付ける必要があります...)がここに入ります。

私がResourceResolverのソースを簡単に見ていた:私はResourceResolver、静的初期化しない限り()メソッドによる非初期化_resolverVectorフィールドにNullPointerExceptionが発生することが起こっている見ることができます http://java2s.com/Open-Source/Java-Document/XML/xml-security-1.4.3/org/apache/xml/security/utils/resolver/ResourceResolver.java.htm

ResourceResolverですでに呼び出されています。 init()メソッドの上、コメントがある:

The init() function is called by org.apache.xml.security.Init.init() 

ResourceResolver自体は、その呼び出しをトリガーするためには表示されません - あなたはそれを行うのですか?そうでない場合は、org.apache.xml.securityのいずれかを使用する前に試してみてください。

0

まずY正確にNullPointerExceptionを引き起こしているものを理解する必要があるので、このコードを分割してnull値がどこにあるかを確認することをお勧めします。

+0

これは実際にはコメントではありません。 – heneryville

+0

非常に有用なものではありません.1つのコマンドです。パラメータがnullでないため、両方の要素がnullになっていません。 – spikeheap

関連する問題