java node子节点_使用Java的XPath循环遍历节点并提取特定的子节点值

我从谷歌了解到,使用XPath从XML中提取数据比使用DOM循环更有意义.

目前,我已经使用DOM实现了一个解决方案,但是代码很冗长,感觉不整洁且不可维护,所以我想切换到更清洁的XPath解决方案.

假设我有这样的结构:

Some title 1

Some image 1

Some title 2

Some image 2

...

我希望能够为每个< product>运行for循环.元素,并在此for循环内,提取标题和图像节点值.

我的代码看起来像这样:

InputStream is = conn.getInputStream();

DocumentBuilder builder =

DocumentBuilderFactory.newInstance().newDocumentBuilder();

Document doc = builder.parse(is);

XPathFactory factory = XPathFactory.newInstance();

XPath xpath = factory.newXPath();

XPathExpression expr = xpath.compile("/products/product");

Object result = expr.evaluate(doc, XPathConstants.NODESET);

NodeList products = (NodeList) result;

for (int i = 0; i < products.getLength(); i++) {

Node n = products.item(i);

if (n != null && n.getNodeType() == Node.ELEMENT_NODE) {

Element product = (Element) n;

// do some DOM navigation to get the title and image

}

}

在我的for循环中,我得到每个< product>作为一个节点,它被转换为一个元素.

我可以简单地使用我的XPathExpression实例来编译和运行Node或Element上的另一个XPath吗?

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值