Xquery将数据保存在XML文件中

时间:2013-10-16 06:55:45

标签: xquery basex

以下是XML结构 -

<Documents>
 <Doc n="Name1" year="2010">
 .....
 </Doc>
 <Doc n="Name2" year="2010">
 .....
 </Doc>
 <Doc n="Name3" year="2011">
 .....
 </Doc>
 <Doc n="Name4" year="2011">
 .....
 </Doc>

我使用BaseX存储此文档。我需要提取 来自此的一些数据并将其存储为xml文件。说,我需要一个单独的 xml文件多年。

如何完成这项工作?

1 个答案:

答案 0 :(得分:1)

当您使用BaseX时,请访问此链接 -

http://docs.basex.org/wiki/File_Module#file:append

for $x in doc('DBNAME')//Doc
  where $x/@year eq '2010'
  return file:append("C:\2010.xml", $x)

此查询将在C驱动器中名为2010.xml的文件中提取所需数据。文件名和位置可以根据您的要求进行更改。

使用上述查询,您将根据需要更改年份值2010。如果你有一年的不同值和年份,正如我从结构中看到的,你可以使用以下查询。这个查询将为这些年创建多个文件。

for $year in (2010 to 2011)
  (: Year are specified :)
  let $fName := concat("C:\", $year, "B.xml")
  (: The path is created and stored in $fName variable :)
  for $x in doc('docs')//Doc
    where $x/@year eq xs:string($year)
    return file:append($fName, $x)

我希望这些例子都是非常自我解释的。