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

jaxb:意外元素(uri:,local:“head”)-bit没有“head”元素

汪翰墨
2023-03-14

当使用NIST CPE的标准CPE 2.3 XML模式定义时,我得到了一个“意外元素”错误。

返回带有此错误的JAXBExcture:

unexpected element (uri:"", local:"head"). Expected elements are <{http://cpe.mitre.org/dictionary/2.0}cpe-item>,<{http://cpe.mitre.org/dictionary/2.0}cpe-list>
  • 我的问题是:这个错误意味着什么
  • 有什么建议可以解决这个问题吗

笔记:

  • 我使用右键单击通过Eclipse Neon创建了JAXB

解组代码非常简单:

        URL url = new URL("http://static.nvd.nist.gov/feeds/xml/cpe/dictionary/official-cpe-dictionary_v2.3.xml");
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("GET");

        InputStream plainXMLCPE = connection.getInputStream();

        JAXBContext jaxbContext  = JAXBContext.newInstance(ListType.class);
        Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();           
        JAXBElement<ListType> cpeList = (JAXBElement<ListType>) jaxbUnmarshaller.unmarshal(plainXMLCPE);
        ListType thelist = cpeList.getValue();

与类似问题不同;我不认为这是元素名的大小写问题,因为元素名“head”根本不出现在任何地方。我不完全理解为什么uri在错误消息中被标记为“”。

我试图手动将@XmlRootElement注释添加到JaxB创建的类中,但没有效果。它自动创建了一个包信息。具有正确名称空间的java。

共有1个答案

贺善
2023-03-14

这里似乎有两个问题:

答案是1。可能是您从浏览器中错误地保存了XSD,导致额外的HTML

例如,在火狐中,当你做文件-

如果你打开你以为正在保存的XSD并仔细查看,你会在本地副本中看到一个标记。

所以这很容易解决。我知道IE也有类似的选择,而且最近没有检查Chrome。

至于2。,不过,我不确定您是如何成功地完成JAXB生成的。我只是尝试过几次(使用EclipseLink MOXy)重新创建它,但我用

如果您回答如何从Eclipse配置JAXB,我可以提供帮助,我将尝试更新我的答案。

 类似资料: