从XML文件中查询数据;来自CSV的查询?

时间:2012-09-13 14:42:42

标签: xml csv xml-parsing grep basex

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

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

<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,我认为(或者更确切地说是希望意味着):用于“条目”标题标签,它是“集合”中任何标签的后代“-titled catalog,如果同一个条目的”cd“-titled descendant的”title“-titled descendant包含文本”lightning“,则回显给我完整的标题。

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

1 个答案:

答案 0 :(得分:0)

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

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

在(1,2,3,4,5)中找到所有带密钥的条目。

然后只需将您的CSV粘贴在括号中