簡體   English   中英

如何使用Java XML中的引用URI加載外部資源

[英]How to load external resources using a reference URI in Java XML

我試圖從URI引用中提取XML節點。 此URI引用由XAdES4j簽名者生成,並且可以引用同一XML文件或同一文件夾中的節點。

我希望加載引用會很簡單

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

然而,這只是給我一個NullPointerException沒有有用的消息。 兩個參數都是非null,在一個簡單的例子中,URI屬性是“data.xml”,referenceDoc基URI是“/Users/ryan/.../test-files/signature.xml.data.xml駐留在相同的test-files目錄。

URI可以指向文件中的元素,所以我希望有一個參考加載器可以為我處理這種復雜性。 我錯過了什么?!

編輯:

我試圖加載的引用是:

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

黑暗中的總刺(你真的需要粘貼堆棧痕跡......),但是這里有。

我快速瀏覽了ResourceResolver的源代碼: http//java2s.com/Open-Source/Java-Document/XML/xml-security-1.4.3/org/apache/xml/security/utils/resolver/ ResourceResolver.java.htm

我可以看到由於ResourceResolver中的非初始化_resolverVector字段會出現NullPointerException,除非已經在ResourceResolver上調用了靜態init()方法。 在init()方法之上,有一個注釋:

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

ResourceResolver本身似乎沒有觸發該調用 - 你這樣做了嗎? 如果不是,您應該在使用任何org.apache.xml.security之前嘗試它。

首先,您需要了解導致NullPointerException的確切原因,因此我建議將此代碼拆分出來,以便您可以看到null值的位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM