当前位置: 首页 > 知识库问答 >
问题:

使用XJC解析XSD架构

邬英武
2023-03-14

我一直在尝试解析xsd文件,以便能够在本地生成jaxb文件。为了做到这一点,我在linux上使用了xjc命令,而不使用命令本身的任何选项。

但即使是我也非常基本地使用它:

xjc太空系统。xsd

它给出了一个错误,如下所示:

ogurdogan@ogurdogan:~/Documents/XTCE/XJC Test$ xjc SpaceSystem.xsd  parsing a schema... [ERROR] The value of attribute "value" associated with an element type "enumeration" must not contain the '<' character. line 4399 of file:/home/ogurdogan/Documents/XTCE/XJC%20Test/SpaceSystem.xsd

错误发生定义见下文第11行。

<simpleType name="ComparisonOperatorsType">
 <annotation>
  <documentation xml:lang="en">Operators to use when testing a boolean condition for a validity check</documentation>
 </annotation>
 <restriction base="string">
  <enumeration value="=="/>
  <enumeration value="!="/>
  <enumeration value="<"/>
  <enumeration value="<="/>
  <enumeration value=">"/>
  <enumeration value=">="/>
 </restriction>
</simpleType>

即使我一直在使用的xsd模式也是一个非常通用和正式的模式,它会给出上面看到的错误。因为它是默认模式,不应该被改变,我不知道我需要做什么...

在一些轮胎之后,我还尝试使用xjc中的选项,例如:

  • -nv

但结果是一样的。。

那里有什么问题?

共有1个答案

殷永嘉
2023-03-14

当我查看链接模式的源时(例如,查看源:https://www.omg.org/spec/XTCE/20180204/SpaceSystem.xsd在第4397行和下面我发现

<simpleType name="ComparisonOperatorsType">
    <annotation>
        <documentation xml:lang="en">Operators to use when testing a boolean condition for a validity check</documentation>
    </annotation>
    <restriction base="string">
        <enumeration value="=="/>
        <enumeration value="!="/>
        <enumeration value="&lt;"/>
        <enumeration value="&lt;="/>
        <enumeration value=">"/>
        <enumeration value=">="/>
    </restriction>
</simpleType>

这与您所展示的完全不同,事实上,任何XML文档都不能有一个未经scaped的

我不知道xjc,但我猜它不会抱怨您链接到的以原始形式保存的真实模式,有人可能错误地使用全选保存了浏览器的“漂亮打印”渲染-

 类似资料:
  • 当xjc解析followinf xsd时,我得到了“Prolog中的错误” 我已经检查了xsd的有效性,没有发现任何错误。开始前没有字符也。。。

  • 我正在使用xjc解析以下xsd 我收到错误:记录原因:cvc datatypevalid。1.2.1:'xsi:schemaLocation'不是'NCName'的有效值。

  • 我正在一个大型企业平台上集成,供应商喜欢频繁更新其XML格式,尽管他们promise更改将继续向后兼容。我有一个可以工作的XSD…现在…但我想用我们的应用程序代码部署该模式,而不必为每个web服务更新重新部署。作为另一个推动力,(基于JVM的)配置语言具有非常好的XSD类型导入。 作为一种后备方法,我可以使用XPath查询提取特定元素,但这就不那么令人愉快了。 如何继续针对已过时但未过时的架构文件

  • 我有一个XSD的格式: 当使用XJC编译器在第1行“prolog中不允许内容”进行编译时,它给出了一个错误。如果我将编码更改为“ISO-8859-1” 它给出了以下错误: 如果我从XSD中删除“root”标记,它将开始出现以下错误: 未能分析架构。 我的问题是,我们是否可以使用XJC编译一个包含多个模式标记的XSD。我尝试了以下文件格式: 它对上面的工作非常好,适当地创建了类。 它与命名空间声明有

  • 这个API使用JAXB来方便地使用对象模型,对象模型是由XJC(XML-to-Java)编译器通过命名引用从XML模式生成的。它抽象了JAXB上下文的创建,并通过各种背景魔法和反射找到ObjectFactory方法。它的基本要旨是,您总是定义一个通用模式,然后任何数量(也可能是0)的模式“扩展”该通用模式,每个模式产生自己的数据模型。通用模式携带可重用的定义,扩展它的定义使用这些定义组成自己的模型

  • B/src/main/gen pom.xml 我想在B项目中从XSD生成类,它存在于一个项目中 在B项目的pom.xml中,我有: