Java: Как я могу получить xpath для org.w3c.dom.Node? - PullRequest
1 голос
/ 07 декабря 2011

Я использую Java 1.6.Учитывая объект org.w3c.dom.Node, как я могу получить выражение String XPath для того места, где этот узел находится в документе XML?НЕ является определенным, что этот узел или любой из его предков / потомков имеют атрибут id.

Ответы [ 2 ]

1 голос
/ 07 декабря 2011

Я не верю, что есть какой-либо простой способ через DOM. Проблема в том, что не существует единого канонического способа идентификации данного узла.

Сказав это, вы можете найти полезной функцию getXPath из diffxml: http://diffxml.cvs.sourceforge.net/viewvc/diffxml/diffxml/src/java/org/diffxml/diffxml/fmes/NodeOps.java?view=markup

Возвращает XPath вида / узла () [4] / узла () [2] и т. Д.

ОБНОВЛЕНИЕ: Поскольку diffxml лицензирован по GPL, а getXPath требует некоторого извлечения, я выпустил его как XPathGen на github: https://github.com/amouat/XPathGen по лицензии Apache.

0 голосов
/ 12 ноября 2014

Вы можете передать свой узел и пустую строку в рекурсивный метод, такой как этот:

static void xpm(Node node, String xpath){
    if (node.getParentNode()==null){
        System.out.println(xpath);
        return;
    }

    xpath = "/"+node.getNodeName()+xpath;
    node = node.getParentNode();
    xpm(node, xpath);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...