我从使用Java Spark的HBase获得数据,并且有关记录中的一列包含XML数据。我正在使用VTD解析器通过XPath解析XML和查询值。
是否可以在一个循环中提供多个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吗?