我一遍又一遍向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
有什么办法吗?
我很感谢所有帮助,即使这是间接的。
谢谢!