2

以下是 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 文件多年。

如何完成这项工作?

4

1 回答 1

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)

我希望这两个例子都是不言自明的。

于 2013-10-16T07:03:09.987 回答