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>