1
我想解析具有相同结构但名称不同的.xml文件。我使用maven从.xsd文件自动生成java类来解析xml文件。我需要能够自动生成大部分类,但使用一些预先创建的类。这将允许我提取一些业务逻辑并避免重复。考虑下面的两个xml示例:如何使用常见的类从Maven生成JAXB
<x>
<y>
<d attribute="value1"/>
</y>
<y>
<d attribute="value2"/>
</y>
</x>
<b>
<c>
<d attribute="value1"/>
</c>
<c>
<d attribute="value2"/>
</c>
</b>
节点“y”和“c”具有相同的结构但名称不同。我想能够创建一个不同的类“W”,可以用来解析这两个XML文件。然后,当Maven自动生成发生而不是创建类“Y”和“C”时,它将使用我的类“W”并将其应用于两个节点。这可以手动通过创建具有类似于此的结构的类来完成:
public class x {
@XmlType("y")
private List<W> w;
}
public class W {
private D d;
}
public class B {
@XmlType("c")
private List<W> w;
}
有各约10 xsd文件用10k-20K线,从而延伸在充分情况下,这例如是不可行的。有任何想法吗?如果此功能在其他地方退出,我将对其他xml解析框架开放。
注: 我尝试使用.xjb与impl类绑定。它期望impl类是生成的类的子类型,这是我寻找的对立关系。
<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.1"
xmlns:xjc= "http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:xs="http://www.w3.org/2001/XMLSchema" >
<jaxb:bindings schemaLocation="example.xsd" node="/xs:schema">
<jaxb:bindings node="//xs:element[@name='y']">
<jaxb:class implClass="W"/>
</jaxb:bindings>
</jaxb:bindings>
</jaxb:bindings>