使用BaseX读取多个XML文件

时间:2013-01-20 19:44:22

标签: xml basex

您好我是BaseX的新手,我正在尝试从文件夹中读取一堆XML文件。读完这些文件后,我会将数据输出到数据库表(一些RDBMS)。但我很遗憾从哪里开始,因为我无法找到有关使用BaseX的很多教程。我在互联网上搜索过但仍然没什么帮助。有人可以帮我解决这个问题。

提前致谢。

2 个答案:

答案 0 :(得分:4)

使用包含此文件夹中所有文档的CREATE DB yourdbname /path/to/foldercreate a database。要access the documents,请使用collection("yourdbname")。如果您需要访问特定文件,请使用collection("yourdbname/document.xml")

要查询所有这些文件,您可以执行类似

的操作
for $document in collection("yourdbname")
return string-join((
    document-uri($document),
    ": ",
    xs:string(count($document//*))
  ))

将返回所有文档路径及其相关的节点数。

如需进一步阅读,请查看getting started section中的BaseX' documentation,您应该可以在那里找到所有需要的信息。要使用SQL在RDBMS中存储数据,请查看SQL module,还有一些示例。

答案 1 :(得分:0)

分别添加一些文件:

nicholas@mordor:~/flwor/bookstore$ 
nicholas@mordor:~/flwor/bookstore$ cat book1.xml 
  <book category="cooking">
    <title lang="en">Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <year>2005</year>
    <price>30.00</price>
  </book>


nicholas@mordor:~/flwor/bookstore$ 
nicholas@mordor:~/flwor/bookstore$ cat book2.xml 
  <book category="children">
    <title lang="en">Harry Potter</title>
    <author>J K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
  </book>


nicholas@mordor:~/flwor/bookstore$ 
nicholas@mordor:~/flwor/bookstore$ basex
BaseX 9.0.1 [Standalone]
Try 'help' to get more information.
> 
> create database books
Database 'books' created in 225.89 ms.
> 
> open books
Database 'books' was opened in 0.04 ms.
> 
> set parser xml
PARSER: xml
> 
> add book1.xml
Resource(s) added in 160.76 ms.
> 
> add book2.xml
Resource(s) added in 4.86 ms.
> 
> xquery /book/title
<title lang="en">Everyday Italian</title>
<title lang="en">Harry Potter</title>
Query executed in 188.71 ms.
> 
> exit
Have a nice day.
nicholas@mordor:~/flwor/bookstore$ 

数据来自:

https://www.w3schools.com/xml/books.xml

其中介绍了Xquery和FLWOR

您可能更喜欢图形前端而不是控制台(文本)界面。