【问题标题】:Errors while JAXB classes from xsd that has other xsd imports within来自 xsd 的 JAXB 类在其中包含其他 xsd 导入时出错
【发布时间】:2016-04-07 22:44:53
【问题描述】:

我尝试为this xsd 生成 JAXB 类,它通过其 url 导入另一个 xsd,同样导入在内部运行到 2 个级别。 ie 这个 xsd 即 cwmp-1-4.xsd 导入其以前的版本 cwmp-1-3.xsd 并导入 cwmp -1-2.xsd.

尝试的解决方案 1:

我尝试生成 jaxb 类的命令是

$ xjc http://www.broadband-forum.org/cwmp/cwmp-1-4.xsd -httpproxy 192.168.100.100:3128

我得到的错误是

[ERROR] White spaces are required between publicId and systemId.
  line 1 of http://www.broadband-forum.org/cwmp/cwmp-1-4.xsd

Failed to parse a schema.

尝试的解决方案 2:

然后我尝试下载所有 xsd(包括内部导入的)并将所有导入位置从“http://www.broadband-forum.org/cwmp/cwmp-1-3.xsd”替换为“cwmp-1-3.xsd”和“http://www.broadband-forum.org/cwmp/cwmp-1-2.xsd”替换为“cwmp-1 -2.xsd",这样就不会在互联网上查找依赖项并执行以下命令

$ xjc cwmp-1-4.xsd -httpproxy 192.168.100.100:3128

我得到的错误跟踪是

parsing a schema...
[ERROR] sch-props-correct.2: A schema cannot contain two global components with the same name; this schema contains two occurrences of 'urn:dslforum-org:cwmp-1-2,SessionTimeout'.
  line 103 of file:/home/vivek/TR069/cwmp/cwmp-1-3.xsd

[ERROR] cvc-pattern-valid: Value 'false' is not facet-valid with respect to pattern '0|1' for type '#AnonType_mustUnderstand'.
  line 107 of file:/home/vivek/TR069/cwmp/cwmp-1-3.xsd

[ERROR] a-props-correct.2: Invalid value constraint value '0' in attribute 'mustUnderstand'.
  line 107 of file:/home/vivek/TR069/cwmp/cwmp-1-3.xsd

[ERROR] cvc-pattern-valid: Value 'true' is not facet-valid with respect to pattern '0|1' for type '#AnonType_mustUnderstand'.
  line 88 of file:/home/vivek/TR069/cwmp/cwmp-1-2.xsd

[ERROR] a-props-correct.2: Invalid value constraint value '1' in attribute 'mustUnderstand'.
  line 88 of file:/home/vivek/TR069/cwmp/cwmp-1-2.xsd

[ERROR] cvc-pattern-valid: Value 'true' is not facet-valid with respect to pattern '0|1' for type '#AnonType_mustUnderstand'.
  line 98 of file:/home/vivek/TR069/cwmp/cwmp-1-2.xsd

[ERROR] a-props-correct.2: Invalid value constraint value '1' in attribute 'mustUnderstand'.
  line 98 of file:/home/vivek/TR069/cwmp/cwmp-1-2.xsd

[ERROR] cvc-pattern-valid: Value 'false' is not facet-valid with respect to pattern '0|1' for type '#AnonType_mustUnderstand'.
  line 107 of file:/home/vivek/TR069/cwmp/cwmp-1-3.xsd

[ERROR] a-props-correct.2: Invalid value constraint value '0' in attribute 'mustUnderstand'.
  line 107 of file:/home/vivek/TR069/cwmp/cwmp-1-3.xsd

Failed to parse a schema.

尝试的解决方案 3:

然后尝试相同但没有验证选项

$ xjc  cwmp-1-4.xsd -httpproxy 192.168.100.100:3128 -nv

最后我能够为 xsd 生成 jaxb 类。

现在我的问题和疑问是

  • 为什么我不能通过在 Internet 上引用它来生成 jaxb 类?我确定我的网络路径没有问题?
  • 尝试的解决方案 2 有哪些错误,为什么在使用标准协议定义架构时会出现这些错误?
  • 如果没有验证选项,我可以生成类,但我不确定将来使用生成的类对 xml 进行编组和解组时是否会遇到任何问题?
  • 而且我无法指定包名称选项(-P 选项),因为它表示已在使用的类(这个问题是最不优先的问题)

请任何人澄清我。感谢您在阅读这篇大文章时的大力支持和耐心等待.. :)

XSD' 供参考

注意:请以 .xsd 扩展名保存文件以查看内容

【问题讨论】:

  • 您是否已将这些 XSD 提交给架构验证器?我的猜测(关于尝试 2)是模式 无效。
  • 嗨,盖尔,我没有这样做。是否可以验证 xsd? bcoz 我知道要针对 xsd 验证 xml,但是如何验证 xsd?这里还需要注意的一点是,这些 xsd 是由宽带论坛定义的协议定义(称为 tr069),所以我有点不愿意怀疑 xsd 的正确性。请澄清我。谢谢。

标签: java xsd jaxb network-protocols


【解决方案1】:

您可以将 cwmp1.x.xsd 下载到您的机器上并在那里调用 xjc。 但是,它生成的 java 文件并不能保证像您预期的那样工作,现在我面临您一直关注的问题,即 Unmarshalling 在某些情况下似乎不起作用并抱怨 Unexpected Node 类型。 我想知道是否有任何类似于 xjc 的东西适用于 TR069 架构

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-17
    • 2015-08-08
    • 1970-01-01
    • 2017-08-28
    • 2021-12-23
    • 2012-11-13
    相关资源
    最近更新 更多