【问题标题】:Parse XML file - can't get all elements解析 XML 文件 - 无法获取所有元素
【发布时间】:2015-08-22 18:02:23
【问题描述】:

我有这个XML

我需要同时获得test_set_nametest_case_name,或者换句话说,我需要3 个test_case_name,还需要它们所属的相应test_set_name。我需要使用 xPath,但我只能得到一个元素。

导入是在 Drupal 站点中进行的,但我认为这个问题与 Drupal 本身无关。我使用一个模块进行解析,该模块要求我提供Context 以及我想要获取的所有字段。我尝试将/report/test_sets 作为上下文,但我只获得了每个 test_set 的第一个 test_case_name。

我必须分两步完成吗?

我想获取这些数据(2 个test_set 和 3 个test_case):

xpathparser:0 :
<test_set_name tl_label="Name" tl_name="name" tl_physicalname="CY_CYCLE">GUI.00 Launch Applications</test_set_name>
<test_set_name tl_label="Name" tl_name="name" tl_physicalname="CY_CYCLE">GUI.02 EM NE.000 EM NE Generic.Generic EM NE tests</test_set_name>
xpathparser:1 :
<test_case_name tp_label="Test Name" tp_name="name" tp_physicalname="TS_NAME">Launch TNMS</test_case_name>
<test_case_name tp_label="Test Name" tp_name="name" tp_physicalname="TS_NAME">Open</test_case_name>
<test_case_name tp_label="Test Name" tp_name="name" tp_physicalname="TS_NAME">ManualNetworkScan</test_case_name>

我在 Drupal 中使用 Feeds 模块。这是 xPath 解析器设置:

【问题讨论】:

  • 您使用什么编程语言?您在哪里“获取”值?没有更多信息,这个问题真的没有任何意义。
  • 我需要在 drupal 站点中导入 xml,但我认为这个问题与 Drupal 本身无关。我使用一个模块进行解析,询问我“上下文”和我想要获取的所有字段。我尝试将“/report/test_sets”作为上下文,但我只得到每个 test_set 的第一个 test_case_name。那是我的问题。
  • 把自己放在阅读这个问题的人的位置上,他对你正在尝试做什么一无所知;他们将能够给出什么答案?如果您不命名,他们如何猜测该模块如何使用?现在edit 这个问题让阅读它的人有足够的上下文来实际帮助你。包括你到目前为止所获得的内容、当前输出、预期输出、示例输入(在问题中,而不是在稍后可能会死掉的链接后面)等
  • 为什么你认为它与 Drupal 无关?如果有人用一些 Java 代码回答你,对你有用吗?
  • 因为我无法一步获得所需的信息,或者是上下文或字段名称不正确,这两个原因仅与 xml 和解析器本身有关。 PS:我编辑了这个问题。

标签: xml parsing xpath xml-parsing


【解决方案1】:

XPath 有一个“联合”运算符|,它可以有效地组合两个表达式的结果。

以下 XPath 表达式将选择文档中的所有 test_set_name 和所有 test_case_name 元素:

//test_set_name|//test_case_name

鉴于问题中当前提供的信息,这是任何人都可以提供的帮助。

这是否适用于您正在使用的未命名模块,以及如何从这些节点检索您想要的数据并将其有效地排列,我无法知道。我也不知道在这种情况下“上下文”和“字段”是什么意思(XPath 表达式是根据“上下文”评估的,这是一个特定的 XML 节点,但您的问题暗示上下文本身就是一个 XPath 表达式,暗示其他含义)。

【讨论】:

  • 感谢 IMSoP。该模块是“提要”。我没有这么说是因为这不是一个与drupal相关的问题。如果我这样做了,有人会说:你为什么不在drupal 网站上问这个?我会试试你的建议。
  • 我在 Drupal 中添加了 xPath 解析器设置以帮助更好地理解问题。
  • IMSop,“联合”运算符部分解决了我的问题。在 drupal 中,导入现在创建 5 个节点,2 个带有 test_set,3 个带有 test_case。我认为现在这是一个 drupal 问题,因为我只需要 3 个节点并关联信息。
猜你喜欢
  • 2017-02-16
  • 2012-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-20
  • 1970-01-01
  • 1970-01-01
  • 2015-03-04
相关资源
最近更新 更多