当前位置: 首页 > 知识库问答 >
问题:

Xpath从同一个节点选择多个属性

齐成和
2023-03-14

从xml中,我需要获得每个节点的名称和面积。

我知道示例xpath,比如,

XMLDependency/@name | XMLDependency/@area,它给出逗号分隔的值,

输出:

Name1、JKL、Name2、MNO

XML:

<DocBuild name="ABCD">
<XMLDependency name="Name1" product="Product ABC" area="JKL" />
<XMLDependency name="Name2" product="Product DEF" area="MNO" />
<XMLDependency name="Name3" product="Product GHI" area="PQR" />
</DocBuild>

怀疑:

请帮帮忙!

[编辑]:

这是我开始使用的Java程序。

    XPath xPath = XPathFactory.newInstance().newXPath();
    NodeList nodeList = (NodeList) xPath.compile("//XMLDependency/@name|//XMLDependency/@area")
        .evaluate(element, XPathConstants.NODESET);
    List<String> nodes = new ArrayList<String>();
    for (int i = 0; i < nodeList.getLength(); i++) {
        Node node = nodeList.item(i);
        nodes.add(node.getNodeValue());
    }
    System.out.println(nodes);

通过使用节点类型和节点值进行处理,可以解决第一个问题。


共有1个答案

解明辉
2023-03-14

您要做的事情不能单独使用XPath来完成。您需要为每个XMLDependency迭代一次,并从那里开始组合值:

XPath xPath = XPathFactory.newInstance().newXPath();
NodeList nodeList = (NodeList) xPath.compile("//XMLDependency")
                                    .evaluate(element, XPathConstants.NODESET);

List<String> nodes = new ArrayList<String>();

for (int i = 0; i < nodeList.getLength(); i++) {
    NamedNodeMap att = nodeList.item(i).getAttributes();

    Node name = att.getNamedItem("name");
    Node area = att.getNamedItem("area");

    nodes.add(name.getNodeValue() + ":" + 
              (area != null ? area.getNodeValue() : ""));
}

System.out.println(nodes);
 类似资料:
  • 问题内容: 我正在使用Selenium IDE进行一些Web应用程序测试,并希望引入一些随机性以扩展我们的测试。我当前正在使用Selenium ,在其中给它一个XPath表达式,它存储与之匹配的第一个元素(排序)。但是我不想存储第一个匹配项,我希望它随机选择一个子节点。 例如 选择此表的所有tr子级。 选择第一个tr(假设现在嵌套表) 选择第三个tr,依此类推。 是否有某种方法(完全在xpath中

  • 问题内容: 我有一个xform文档 我想使用xpath和jdom从xform中选择数据元素 似乎工作正常,并选择title元素,但 不选择模型元素。我想这与名称空间有关。 问题答案: 一些东西。您 确实 应该使用JDOM 2.0.x …(最新版本2.0.5)。2.0.x版本中的XPath API远远优于JDOM 1.x中的XPath API:请参阅https://github.com/hunter

  • 这是我的问题的一个细节。我需要使用XPath选择以下节点: 应该如何制定xpath查询来查找属性的值等于属性的值的所有节点? 当然完全容易--但我只是无法到达那里,在网上找不到任何合适的东西。

  • 我是Xpath的新手。 假设我有一个xml目录可以将商品导入电子商店: 目录的第一部分是商品类别列表,第二部分是商品列表。每种商品都有一个<代码> 从上面的代码中,我需要得到这样一个好的描述:类别:夹克;标签:D 标签、颜色和尺寸可直接从<代码> 所以我的目标是选择

  • 如何能够基于另一个同级节点的属性选择节点属性?我想要实现的是从所有节点中提取链接(href值),这些节点后跟具有属性class=“body table news loss”的节点跨度,即选择器应该返回https://finance.yahoo.com/news/inspiremd-announces-planned-recapitalization-120000752.html在下面的示例中。我试

  • 我一直在用PHP的SimpleXMLIterator处理XML数据。 在迭代一个子树(