gpt4 book ai didi

java - 使用 substitutionGroup 的 JAXB 继承在解码时不起作用

转载 作者:行者123 更新时间:2023-11-30 11:52:22 28 4
gpt4 key购买 nike

我在不同的命名空间下有 10 个模式,每个模式都有一个 complexType 和关联的元素,该元素替代了一个名为“Report”的元素,例如:

<xsd:element name="MyReport" type="foo:MyReportType" substitutionGroup="bar:Report"/>

<xsd:element name="Report" abstract="true"/>

当我解码一个包含所有 10 个报告的 XML 文档时,当我执行以下操作时只找到 5 个:

JAXBContext context = JAXBContext.newInstance("com.foo.bar");
Unmarshaller unmarshaller = context.createUnmarshaller();
//get root node of xml
JAXBElement<ReportPackage> package = unmarshaller.unmarshal(new StreamSource(new File("example.xml")));
ReportPackage rp = package.getValue();
ReportSection reports = rp.getReports();
List<JAXBElement<?>> reportList = reports.getReport();
//iterate through the 10 reports
for (int i = 0; i < reportList.size(); i++) {
JAXBElement rep = reportList.get(i);
...
}

报告的顺序或 xml 中报告的数量无关紧要。 10 种报告中有 5 种相同。我使用了 JAXB 的引用实现 2.24u1 和 2.1.10(JDK 6 版本),均无济于事。 substitutionGroup 似乎被忽略了。任何帮助将不胜感激!

最佳答案

尝试以这种方式创建 JAXB 上下文:JAXBContext.newInstance("package1:package2:package3:...") 其中 packageX 是您的 ObjectFactories 所在的包.

关于java - 使用 substitutionGroup 的 JAXB 继承在解码时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6865854/

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