Пример Java-анализатора VTD Xml - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть данные из HBase, использующие Java Spark, и у рассматриваемой записи есть столбец, содержащий данные XML.Я использую синтаксический анализатор VTD для анализа XML и значений запроса через XPath.
Возможно ли обеспечить несколько XPath в цикле, искать их один за другим и давать значение.Мы хотели бы избежать жесткой записи XPath и вызывать его несколько раз в коде.Мое требование состоит в том, чтобы указать все значения xpath в файле конфигурации и вызвать функцию, чтобы она выдала все значения, соответствующие XPath.

public String getTxnRef() throws Exception {

    String path = "//HJG/ERY";
    ap.resetXPath();               //Reset the internal state so the XPath can be re-used
    ap.selectXPath(path);          //This method compiles a XPath expression into internal representation
    if ((ap.evalXPath()) != -1) {
        int val = vn.getText();
        if (val != -1) {
         //   if (vn.toElement(vn.PREV_SIBLING, categoryType)) {
                return vn.toNormalizedString(vn.getText());
            }

    }

    return null;
}

public String getDateCreated() throws Exception {

    String path = "//ABC/fgh";
    ap.resetXPath();               //Reset the internal state so the XPath can be re-used
    ap.selectXPath(path);          //This method compiles a XPath expression into internal representation
    if ((ap.evalXPath()) != -1) {
        int val = vn.getText();
        if (val != -1) {
         //   if (vn.toElement(vn.PREV_SIBLING, categoryType)) {
                return vn.toNormalizedString(vn.getText());
            }

Для другого Xpath нам нужно снова написать одну и ту же функцию.

Можем ли мы вызвать только одну функцию для передачи нескольких XPath?

...