gpt4 book ai didi

java - SAXParseException 列出可选值

转载 作者:行者123 更新时间:2023-11-30 05:23:31 24 4
gpt4 key购买 nike

我在 Windows 10 上运行的 Java 1.8.0_191 程序中收到以下 UnmarshalException,该程序使用 jaxb2 Maven 插件版本 2.5.0 生成的类来处理传入的 XML SOAP 请求:

JAXB unmarshalling exception; nested exception is javax.xml.bind.UnmarshalException with linked exception:
[org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 622; cvc-complex-type.2.4.a : Contenu non valide trouvé à partir del'élément 'MotifCommande'. L'une des valeurs '{AliasCde,RefExterneCde, DateDepot}' est attendue.]

以下是异常消息的英文快速翻译:

Invalid content found starting with the MotifCommand item. One of the items '{AliasCd, RefExterneCde, DateDepot}' is expected.

奇怪的是,项目列表提到了两个可选字段(AliasCD 和 RefExterneCde)和一个强制字段(DateDepot)。为什么不只是必填字段?

此外,为什么消息指出以 MotifCommande 标记开头的内容无效,尽管后者出现在 XSD 中的(强制)DateDepot 标记之后?

XSD 和 SOAP 请求以 zip 形式提供,位于此网站上:https://github.com/highsource/maven-jaxb2-plugin/issues/185

非常感谢您的帮助。

最佳答案

错误消息列出了文档中该位置允许的所有元素。这还包括可选元素。如果出现其他情况则为错误。

XML 模式中的相关部分是这样的:

<xsd:sequence>
<xsd:element name="SystemeRefCde" type="xsd:string" minOccurs="1"/>
<xsd:element name="AliasCde" minOccurs="0" maxOccurs="unbounded">
<xsd:element name="RefExterneCde" minOccurs="0" maxOccurs="unbounded">
<xsd:element name="DateDepot" type="xsd:string" minOccurs="1"/>
<!-- ... -->
<xsd:element name="MotifCommande" type="xsd:string" minOccurs="0"/>

您正在使用序列。因此,项目的顺序是相关的。这意味着,在 SystemeRefCde 之后,仅可选元素 AliasCdeRefExterneCde ,在这些元素之后,可能会出现强制元素 DateDepot 。所有其他元素都会导致架构违规。

在您的请求中,您有:

<RefCommande>32R69010200004101415</RefCommande>
<SystemeRefCde>32R</SystemeRefCde>

<MotifCommande>ORDST</MotifCommande>

SystemeRefCde之后,序列中的下一个元素是MotifCommande。 XSD 不允许这样做。您至少缺少中间的强制 DateDepot 元素。

关于java - SAXParseException 列出可选值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59101358/

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