如何知道jaxb对象的树位置

时间:2018-10-04 12:48:39

标签: java xml xpath xml-parsing jaxb

我一遍又一遍向Google提出了这个问题,并通读了几个SO主题,但没有发现任何有用的东西。

在我的项目中,我有一个很大的XML,未打包为JAXB对象结构。假设JAXB是这样的:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(
    name = "GrandParent.B",
    propOrder = {"parent"}
)
public class GrandParentB implements Equals, HashCode, ToString {
    @XmlElement(
        name = "Parent"
    )
    protected ParentB parent;
}


@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(
    name = "Parent.B",
    propOrder = {"child"}
)
public class ParentB implements Equals, HashCode, ToString {
    @XmlElement(
        name = "Child"
    )
    protected ChildB child;
}

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(
    name = "Child.B",
    propOrder = {"address"}
)
public class ChildB implements Equals, HashCode, ToString {
    @XmlElement(
        name = "Address"
    )
    @XmlJavaTypeAdapter(Adapter3.class)
    protected String address;
}

现在,我从根目录检索JAXB对象:

ChildB childB = grandParentB.getParentB().getChildB();

并在所有应用程序中使用它们:

void someMethod(ChildB childB) {
   doSomethingWith(childB)
}

现在,我想确定 childB 节点在树中的位置(最好是XPath):

void someMethod(ChildB childB) {
     logger.info(someFramework.getAbsoluteXPath(childB));
}

INFO : /GrandParent/Parent/Child

有什么办法吗?

我很感谢所有帮助,即使这是间接的。

谢谢!

0 个答案:

没有答案