gpt4 book ai didi

java - Java中如何判断子类的类类型

转载 作者:行者123 更新时间:2023-11-30 10:36:44 24 4
gpt4 key购买 nike

我有一个包含以下元素的 XML 文件。

<productType>
<productTypeX />
<!-- One of the following elements are also possible:
<productTypeY />
<productTypeZ />
-->
</productType>

因此,XML 也可能如下所示:

<productType>
<productTypeZ />
</productType>

使用 JAXB 将 XML 解码为 POJO。

我如何确定 <productType> 的 child 是否是是 X、Y 还是 Z?是在映射的 POJO 中还是直接在 XML 中?

最佳答案

现在有一种方法可能不比检查手工便宜 - 写 if对于每个 GETTER关于子类(null == obj.getProductTypeX())但这里是:

让我们假设您最终得到 JAXBElement<ProductType> productType当你解码时。

现在你需要得到一个 Element (org.w3c.dom.Element) 对象。可以这样做:

DOMResult res = new DOMResult();
marshaller.marshal(productType, res);
Element elt = ((Document)res.getNode()).getDocumentElement();

现在的界面Element扩展接口(interface) Node从中我们可以得出结论,我们在这里结束了 TREE结构对象,我们可以得到他现有的 child ,例如:

NodeList nodeList = elt.getChildNodes();

现在您可以检查每个 Node 的类型和值但你必须检查节点是否是 ELEMENT_NODEATTRIBUTE_NODE在大多数情况下:

for (int i = 0; i < nodeList.getLength(); i++) {
Node currentNode = nodeList.item(i);
if (currentNode.getNodeType() == Node.ELEMENT_NODE) {
currentNode.getNodeName();
currentNode.getTextContent();
//And whatever you like
}
}

我希望这会对您有所帮助,或者为您提供有关如何获得所需内容的任何指导。

关于java - Java中如何判断子类的类类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40465293/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com