Как узнать позицию дерева объекта jaxb - PullRequest
0 голосов
/ 04 октября 2018

Я снова и снова задавал этот вопрос в 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

Есть ли способ сделать это?

Я ценю любую помощь, даже если это будет косвенным.

Спасибо!

...