首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SAXParseException列出可选值

SAXParseException列出可选值
EN

Stack Overflow用户
提问于 2019-11-29 08:37:26
回答 1查看 101关注 0票数 1

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

代码语言:javascript
复制
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.]

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

项开始的MotifCommand无效内容。其中一个项目'{AliasCd,RefExterneCde,DateDepot}‘是预期的。

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

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

XSD和SOAP请求作为一个压缩,在这个网站上:https://github.com/highsource/maven-jaxb2-plugin/issues/185

非常感谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2019-11-29 09:08:33

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

XML模式的相关部分如下:

代码语言:javascript
复制
<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之后,只有optinoal元素AliasCdeRefExterneCde之后,强制元素DateDepot可能出现。每个其他元素都会导致架构冲突。

在你的请求中,你必须:

代码语言:javascript
复制
<RefCommande>32R69010200004101415</RefCommande>
<SystemeRefCde>32R</SystemeRefCde>

<MotifCommande>ORDST</MotifCommande>

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59101358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档