java xpathexpression_java – XPathExpression没有在适当的上下文中进行评估?

我正在尝试从USGS解析一些

XML.

“parameterCd”参数列出了我想要的3项数据.我可能会或可能不会全部回来.

我在使用javax库的Android上执行此操作.

在我的代码中,我最初检索0-3 ns1:timeSeries节点.这很好用.我当时想要做的是,在单个timeSeries节点的上下文中,检索ns1:variable和ns1:values节点.

所以在我的代码下面我有:

expr = xpath.compile("//ns1:variable");

NodeList variableNodes = (NodeList) expr.evaluate(timeSeriesNode, XPathConstants.NODESET);

我希望只返回一个节点,因为评估应该发生在我传入的单个timeSeriesNode的上下文中(根据documentation).但是,它会返回文档的所有ns1:variable节点.

我错过了什么吗?

这是相关部分……

XPathFactory factory = XPathFactory.newInstance();

XPath xpath = factory.newXPath();

xpath.setNamespaceContext(new InstantaneousValuesNamespaceContext());

XPathExpression expr;

NodeList timeSeriesNodes = null;

InputStream is = new ByteArrayInputStream(sourceXml.getBytes());

try {

expr = xpath.compile("//ns1:timeSeries");

timeSeriesNodes = (NodeList) expr.evaluate(new InputSource(is), XPathConstants.NODESET);

for(int timeSeriesIndex = 0;timeSeriesIndex < timeSeriesNodes.getLength(); timeSeriesIndex++){

Node timeSeriesNode = timeSeriesNodes.item(timeSeriesIndex);

expr = xpath.compile("//ns1:variable");

NodeList variableNodes = (NodeList) expr.evaluate(timeSeriesNode, XPathConstants.NODESET);

// Problem here. I've got all the variables, not the individual one I want.

for(int variableIndex = 0; variableIndex < variableNodes.getLength(); variableIndex++){

Node variableNode = variableNodes.item(variableIndex);

expr = xpath.compile("//ns1:valueType");

NodeList valueTypeNodes = (NodeList) expr.evaluate(variableNode, XPathConstants.NODESET);

}

}

} catch (XPathExpressionException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值