【问题标题】:Querying data out of an XML file; queries from CSV?从 XML 文件中查询数据;来自 CSV 的查询?
【发布时间】:2012-09-13 14:42:41
【问题描述】:

我在一个 CSV 文件和一个包含复杂嵌套信息的 XML 文件中有一个大约 950 个整数的列表(每个条目都包含多个嵌套)。在 CSV 文件中给定一个整数 i,每个 i 对应于 XML 文件中的一个 ii in <entry><key>i</key>。我想从 XML 文件中为 CSV 文件中列出的每个 i 提取一组预先指定的列。

以下是一组提取“列”的示例,因为缺少更好的词(目标被双星号包围):

<entry>
<key>55</key>
<cd language="**en**">
  <title>**Ride The Lightning**</title>
  <band>Metallica</band>
</cd>
<tabbook language="**en**">
  <title>**Ride The Lightning Tab**</title>
  <author>Who J. Ever</author>
</tabbook>
</entry>

我应该将 CSV 文件的值加载到脚本中的变量中,还是有现有的更好的方法来执行此操作?

编辑:

目前我正在尝试使用 BaseX。对于初学者查询,我正在尝试:for $e in collection("catalog")//entry where //entry/cd/title contains text "lightning" return //title,我认为它的意思是(或者更确切地说是希望的意思):对于一个以“条目”为标题的标签,它是“集合”中任何标签的后代 -标题目录,如果同一条目的“cd”标题后代的“标题”标题后代包含文本“闪电”,则将完整标题回显给我。

该死,这令人困惑....有人告诉我使用concat() 而不是return。查询似乎不正确。当我想出正确的语法时,我会继续学习并再次发布。

【问题讨论】:

  • 我正在考虑将分隔符从, 更改为||or,然后将整个字符串复制并粘贴到某种查询中......或者,使用类似的程序fxgrep?

标签: xml csv xml-parsing grep basex


【解决方案1】:

使用 XPath(至少使用 XPath2),您可以使用类似

的查询
 //entry[key = (1,2,3,4,5)]

用 (1,2,3,4,5) 中的键查找所有条目。

然后将您的 CSV 粘贴到括号中

【讨论】:

  • 但是,如果您只想从这些键中的每一个中获取一组指定的后代怎么办?例如,您只想获取艺术家姓名和前两个 CD 标题。您不想获得鼓手的姓名、第三张 CD 标题或任何其他信息?
猜你喜欢
  • 2018-07-10
  • 2016-05-29
  • 2017-02-09
  • 1970-01-01
  • 1970-01-01
  • 2011-09-23
  • 2016-09-06
  • 2011-03-31
相关资源
最近更新 更多