以下是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文件多年。
如何完成这项工作?
答案 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)
我希望这些例子都是非常自我解释的。