Java 访问与Jaxb不在同一XSD中的对象
首先,我有一个XSD,其中包含对commentType对象的引用:Java 访问与Jaxb不在同一XSD中的对象,java,xml,xsd,jaxb,Java,Xml,Xsd,Jaxb,首先,我有一个XSD,其中包含对commentType对象的引用: ... <xs:complexType> <xs:sequence> <xs:element name="entry" type="ref:commentType"> ... 。。。 ... commentType描述为(相同的XSD): 。。。 一些文本 ... 在我使用Jaxb解析的XML文件中,条目引用了一个opDetails对象,它在另一个XSD中定义 .
...
<xs:complexType>
<xs:sequence>
<xs:element name="entry" type="ref:commentType">
...
。。。
...
commentType描述为(相同的XSD):
。。。
一些文本
...
在我使用Jaxb解析的XML文件中,条目引用了一个opDetails对象,它在另一个XSD中定义
...
<entry date="2010-03-26T10:40:27Z" type="PRODUCT">
<opDetails xmlns="http://path/to/opDetails">
<!--Object properties-->
</opDetails>
...
。。。
...
(为了清晰起见,我简化了名称和结构)
问题:
如何在我的代码中正确映射这个其他对象
我有一个entry.getContent(),它是TinyElementImpl的列表
显然,生成2个xsd的类并尝试将TinyElementImpl转换为opDetails不是一个选项:)我找到了答案
解组也适用于节点。
我的代码:
org.w3c.dom.Node nodeEntryContent = (org.w3c.dom.Node)entry.getContent().get(0);
JAXBContext ctx;
Unmarshaller um;
opDetails dOp = null;
try {
ctx = JAXBContext.newInstance("package.of.opDetails.containing.xjc.generated.classes");
um = ctx.createUnmarshaller();
dOp = (opDetails)um.unmarshal(nodeEntryContent);
} catch (JAXBException e1) {
System.out.println("XML parsing error" + e1.getMessage());
}
您是否要在“main”xsd中导入其他xsd?我已经尝试过了:This(您的第一个代码块):
没有类似这样的名称:
它是否位于例如有名称的元素中?您使用的工具也可以验证您的xml吗?肯定:所有文件都完全有效。(XMLSpy)我不是唯一一个处理这些文件的人,而且创建这些文件的人都很专业:)好的,只是确认一下:-)
org.w3c.dom.Node nodeEntryContent = (org.w3c.dom.Node)entry.getContent().get(0);
JAXBContext ctx;
Unmarshaller um;
opDetails dOp = null;
try {
ctx = JAXBContext.newInstance("package.of.opDetails.containing.xjc.generated.classes");
um = ctx.createUnmarshaller();
dOp = (opDetails)um.unmarshal(nodeEntryContent);
} catch (JAXBException e1) {
System.out.println("XML parsing error" + e1.getMessage());
}