当前位置: 首页 > 面试题库 >

XPath-如何获取具有相同名称的多个标签的列表

史劲
2023-03-14
问题内容
<?xml version="1.0"?>
<shop>
    <shoes>
        <brand>Nike</brand>
        <size>13</size>
        <colour>White</colour>
        <price>34.99</price>
        <additional name="abc">123</additional>
        <additional name="def">456</additional>
        <additional name="ghi">789</additional>
        <additional name="jkl">101</additional>
    </shoes>
    <trousers>
        <brand>Levi</brand>
        <size>36</size>
        <legSize>33</legSize>
        <colour>Stonewash</colour>
        <price>69.99</price>
        <additional name="mno">112</additional>
        <additional name="pqr">131</additional>
        <additional name="stu">415</additional>
        <additional name="vwx">161</additional>
    </trousers>
</shop>

给定上面的xml文件,我将如何检索<additional>标签内所有标签的列表<shoes>?我想获取“名称”的所有值以及标签之间的数字值。像这样:

abc, 123
def, 456
ghi, 789
jkl, 101

问题是我不知道会有多少个附加标签。可能没有,也可能有20。我需要某种方法来对它们全部进行计数,然后删除信息。


问题答案:

这是一个使用XPathJDK执行查询的示例。它假定变量xml包含您的XML文档。

XPathFactory factory = XPathFactory.newInstance();
XPath xPath = factory.newXPath();
NodeList nodeList = (NodeList) xPath.evaluate("//shoes/additional", new InputSource(new StringReader(xml)), XPathConstants.NODESET);
for (int i = 0; i < nodeList.getLength(); ++i) {
    String name = nodeList.item(i).getAttributes().getNamedItem("name").getNodeValue();
    String text = nodeList.item(i).getTextContent();
    System.out.println(name + ", " + text);
}


 类似资料:
  • 问题内容: 我有一个PHP应用程序,有时需要处理URL,其中URL中的多个参数具有相同的名称。是否有一种简单的方法来检索给定键的所有值?PHP $ _GET仅返回最后一个值。 具体来说,我的应用程序是一个OpenURL解析器,可能会获得如下URL参数: (是的,我知道这很丑陋,欢迎来到我的世界)。请注意,键“ rft_id”出现两次: 将返回just ,先前的值()已被覆盖。 我想同时访问这两个值

  • 我创建了一个java程序来创建一个预订系统,我必须创建一个GUI。在GUI中,我创建了具有相同对象名称的多个标签。我为此使用了gridPane Layout。 现在,我想删除所有这些标签并重新创建新标签,但当我尝试这样做时:

  • 问题内容: 我的MySQL数据库中有这些表: 通用表: Facebook表: 首席表: 基本上,常规表包含一些( 显然 )常规数据。基于generalTable.scenario,您可以在其他两个表中查找更多详细信息,这些表在某些熟悉的列中(例如,expiresAt),而在其他一些列中则不然。 我的问题是,如何仅通过一个查询就可以获取generalTable和正确的明细表的联接数据。 所以,我想这

  • 问题内容: 我是Swift的新手,我已经遍历了一些教程,其中许多教程使用同一个名称多次定义了一个函数。 我已经习惯了其他编程语言,否则将无法执行此操作。 因此,我检查了官方的Swift手册,还检查了override关键字,以了解可以得到的结果,但是仍然无法理解以下代码: 从我看到的函数tableView设置在第1行和第5行,我注意到的唯一区别是第一个tableView函数返回,而第二个函数返回(U

  • 问题内容: 如果类路径中有两个JAR文件,两个文件的根中都包含一个名为“ config.properties”的资源。有没有办法检索类似于的 两个 文件?顺序不相关。 一种替代方法是,如果可能的话,在类路径中加载与某些条件匹配的每个属性文件。 问题答案: 您需要 (或静态版本)。 但是不幸的是,资源不在“目录”中存在一个已知问题。例如,可以,但是可能是一个问题。在Spring Reference中

  • 我有一个采访问题-C#,是否可以在一个类中实现,从接口继承有两个具有相同名称和相同签名的方法?