gpt4 book ai didi

java xml验证soap-enc命名空间异常

转载 作者:行者123 更新时间:2023-12-01 12:00:50 25 4
gpt4 key购买 nike

我需要根据 xsd 验证我的 Web 服务对象,我正在这样做:

SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
factory.setResourceResolver(new ResourceResolver());
Source schemaFile = new StreamSource('Input stream with my xsd');
factory.newSchema(schemaFile);

最后一行 -factory.newSchema(schemaFile);使用使用soap-enc命名空间的xsd文件时抛出和异常。以下是 xsd 文件的部分内容、命名空间声明和使用命名空间的复杂类型。

<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/">
<xsd:complexType name="name">
<xsd:sequence>
<xsd:element name="id" type="xsd:string"/>
<xsd:element name="names" type="soap-enc:Array"/>
</xsd:sequence>
</xsd:complexType>

异常(exception)是:org.xml.sax.SAXParseException;行号:20;列数:62; src-resolve.4.2:解析组件“soap-enc:Array”时出错。检测到“soap-enc:Array”位于命名空间“http://schemas.xmlsoap.org/soap/encoding/”中,但该命名空间中的组件无法从架构文档“null”引用。如果这是不正确的命名空间,则可能需要更改“soap-enc:Array”的前缀。如果这是正确的命名空间,则应将适当的“导入”标记添加到“null”。

最佳答案

此 XML 架构引用了此架构文件中未定义的soap-enc:Array 类型。因此,您必须包含定义它的文件:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/">
<xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/"
schemaLocation="..."/>
<!-- ...

您可以在 Web 上定义 namespace 的位置找到适当的 XML 架构。我认为最好从本地文件系统下载并使用它,如果您经常需要它,这通常会更有效。不过,使用 URL 作为 schemaLocation 应该也可以。

关于java xml验证soap-enc命名空间异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27987201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com