Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java XML中的引用URI加载外部资源_Java_Xml_Reference_Digital Signature - Fatal编程技术网

如何使用Java XML中的引用URI加载外部资源

如何使用Java XML中的引用URI加载外部资源,java,xml,reference,digital-signature,Java,Xml,Reference,Digital Signature,我试图从URI引用中提取XML节点。此URI引用由XAdES4j签名者生成,可以引用同一XML文件或同一文件夹中的节点 我希望加载引用会像 XMLSignatureInput referencedXML = ResourceResolver.resolveStatic(referenceNode.getAttributeNode("URI"), referenceDoc.getBaseURI()); 然而,这只是给了我一个NullPointerException,没有有用的消息。这两个参数都是

我试图从URI引用中提取XML节点。此URI引用由XAdES4j签名者生成,可以引用同一XML文件或同一文件夹中的节点

我希望加载引用会像

XMLSignatureInput referencedXML = ResourceResolver.resolveStatic(referenceNode.getAttributeNode("URI"), referenceDoc.getBaseURI());
然而,这只是给了我一个NullPointerException,没有有用的消息。这两个参数都是非空的,在一个简单的例子中,URI属性是“data.xml”,referenceDoc基URI是“/Users/ryan/../test files/signature.xml.data.xml驻留在同一个测试文件目录中

URI可以指向文件中的一个元素,所以我希望有一个引用加载器来处理这种复杂性。我错过了什么

编辑:

我尝试加载的引用是:

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

首先,您需要了解导致NullPointerException的确切原因,因此我建议将此代码拆分,以便您可以看到null值的位置。

黑暗中的Total stab in dark(您确实需要粘贴stacktraces…),但现在开始

我在以下位置快速查看了ResourceResolver的源代码:

我可以看到,由于ResourceResolver中的未初始化的_Resolvector字段,将出现NullPointerException,除非已经对ResourceResolver调用了静态init()方法。在init()方法上方,有一条注释:

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

ResourceResolver本身似乎没有触发该调用-您是否这样做?如果没有,您应该在使用org.apache.xml.security的任何内容之前尝试它。

NullPointerException的堆栈跟踪是什么?可能是内部错误。您能举一个您正在使用的URI的示例吗?问题,URI是否作为链接导入到了中xml的顶部?如果是这样,那么当Xalan/Xerces自动导入引用时,它应该是可访问的,-当我使用单独的文件进行xsl时,我看到了这一点。-如果URI在表单文件中,那么为什么不尝试创建一个文件引用,然后将其作为新文档打开呢?URI在表单文件中:/,但是它有一个元素id附加到它之后,如果不进行额外的解析,就无法找到文件,这是我希望避免的。URI不存在于XML的顶部,我已经在问题中添加了元素。你能提供NPE的堆栈跟踪吗?如果没有堆栈跟踪,那么你只能一步一步地调试它。这并不是一个真正的答案注释也不是一个非常有用的注释-它是一个命令,其中两个元素都不是null,因为参数都不是null。