我有一個包含一個稱爲Xml element (name = "Header")
根Xml document (name = "Entity")
和未知名的另一個XML元素,但已知的是,具有內部XmlElement(name="label")
JAXB元素與特定的類型,但未知名
以下是可能的XMLS:
<Entity>
<Header>this is a header</Header>
<a>
<label>this is element A</label>
<otherElements/>
</a>
</Entity>
<Entity>
<Header>this is a different header</Header>
<b>
<label>this is some other element of name b</label>
<others/>
</b>
</Entity>
這裏是我的JAXB註釋類:
@XmlRootElement(name = "Entity")
@XmlAccessorType(XmlAccessType.NONE)
public class Entity {
@XmlElement(name = "Header")
private Header header;
@XmlElements({
@XmlElement(name = "a", type=LabelledElement.A.class),
@XmlElement(name = "b", type=LabelledElement.B.class)
})
private LabelledElement labelledElement;
// constructors, getters, setters...
}
@XmlAccessorType(XmlAccessType.NONE)
public abstract class LabelledElement {
@XmlElement
private String label;
@XmlAnyElement
private List<Element> otherElements;
public static class A extends LabelledElement {}
public static class B extends LabelledElement {}
}
這是偉大的工作!但後來我發現,它不僅<a>
和<b>
這可能是<c>
,<asd>
甚至<anything>
...
所以上市XmlElement(name = "xyz", type = LabelledElement.xyz.class)
顯然不是正確的解決方案。
無論LabelledElement
名稱是什麼,我所關心的都是Entity#getLabelledElement()#getLabel()
。
這甚至可以用JAXB嗎?
感謝您的回答,但是,這並沒有幫助。即使我不關心「otherElements」,但我需要讀取標籤值,我正在將XML編組到文件中。 – user640853
@ user640853對不起,它沒有幫助,你能解釋一下你在編組時的期望結果嗎? –
我需要馬歇爾XML作爲是,這意味着所有元件和下'labelledElement'保持屬性,但我需要讀標籤的值 '頭 otherElements > ' 隨着你的解決方案,我會失去'otherElements'元素 –
user640853