我有一个包含以下元素的XML文件。
<productType>
<productTypeX />
<!-- One of the following elements are also possible:
<productTypeY />
<productTypeZ />
-->
</productType>
因此,XML也可能如下所示:
<productType>
<productTypeZ />
</productType>
使用JAXB将XML解组为POJO。
如何确定<productType>
的孩子是X,Y还是Z?在映射的POJO中还是直接在XML中?
答案 0 :(得分:1)
现在有一种方法可能不比手动检查 便宜 - 为每个if
子类写GETTER
{{1} 1}})但这里是:
让我们假设你在解组时最终得到null == obj.getProductTypeX()
。
现在您需要以JAXBElement<ProductType> productType
(org.w3c.dom.Element)对象结束。可以这样做:
Element
现在,接口DOMResult res = new DOMResult();
marshaller.marshal(productType, res);
Element elt = ((Document)res.getNode()).getDocumentElement();
扩展了我们可以使用的接口Element
得出结论,我们最终得到一个Node
结构对象,我们可以得到他现有的孩子:
TREE
现在您可以检查每个NodeList nodeList = elt.getChildNodes();
的类型和值,但在大多数情况下,您必须检查节点是Node
还是ELEMENT_NODE
:
ATTRIBUTE_NODE
我希望这会对您有所帮助,或者为您提供如何获得所需信息的任何指示。