如何使用eXist数据库中使用的XQuery文件将CSV数据添加到现有的XML中
我正在研究eXist数据库,我有一个新想法,我必须使用XQuery实现XML文件 我想将CSV文件转换为已在数据库集合中的XML。这个XML文件只包含必要的标记和信息。转换后的数据将保存到eXist数据库中的XML中 XML如下:其名称为“createXML.XML”如何使用eXist数据库中使用的XQuery文件将CSV数据添加到现有的XML中,csv,xquery,exist-db,Csv,Xquery,Exist Db,我正在研究eXist数据库,我有一个新想法,我必须使用XQuery实现XML文件 我想将CSV文件转换为已在数据库集合中的XML。这个XML文件只包含必要的标记和信息。转换后的数据将保存到eXist数据库中的XML中 XML如下:其名称为“createXML.XML” <?xml version="1.0" encoding="UTF-8"?> <records> // All the Records from CSV file want to put here.....
<?xml version="1.0" encoding="UTF-8"?>
<records>
// All the Records from CSV file want to put here..... between Records tags
</records>
这样的输出
<?xml version="1.0" encoding="UTF-8"?>
<records>
<user>
<name>krunal</name>
<subject>maths</subject>
<marks>95</marks>
</user>
<user>
<name>abc</name>
<subject>sub1</subject>
<marks>87</marks>
</user>
<user>
<name>def</name>
<subject>sub2</subject>
<marks>67</marks>
</user>
.
.
.
</records>
克鲁纳尔
数学
95
abc
sub1
87
def
sub2
67
.
.
.
有谁能告诉我如何使用eXist数据库中的XQuery将CSV数据添加到现有的XML中并执行此功能。要阅读文件,请查看您的XQuery实现文档,这里
let$csv:='姓名,教员
艾丽斯,人类学
鲍勃,生物学
让$line:=标记化($csv,'\n')
让$head:=标记化($line[1],','))
let$body:=删除($line,1)
返回
{
对于$body中的$line
让$fields:=标记化($line,,'))
返回
{
对于$head中的$pos处的$key
let$value:=$fields[$pos]
返回
元素{$key}{$value}
}
}
另一种可能是使用另一个具有内置csv导入支持的XQuery引擎,如或。要读取文件,请查看您的XQuery实现文档,如下所示
let$csv:='姓名,教员
艾丽斯,人类学
鲍勃,生物学
让$line:=标记化($csv,'\n')
让$head:=标记化($line[1],','))
let$body:=删除($line,1)
返回
{
对于$body中的$line
让$fields:=标记化($line,,'))
返回
{
对于$head中的$pos处的$key
let$value:=$fields[$pos]
返回
元素{$key}{$value}
}
}
另一种可能是使用另一个具有内置csv导入支持的XQuery引擎,如或。假设(1)您的csv文件已在数据库中,并且(2)您希望将csv转换为XML的结果存储在新的XML文件中,那么XQuery有三个部分:
let $csv-file := '/db/myCSV.csv'
let $csv-binary := util:binary-doc($csv-file)
let $csv := util:binary-to-string($csv-binary)
let $xml := local:csv-to-xml($csv)
return
xmldb:store('/db', 'createXML.xml', $xml)
这将把转换后的myCSV.csv版本作为createXML.xml存储在eXist数据库的根目录下:/db/createXML.xml
相反,如果您希望将XML结果附加到现有XML文件中,则需要应用XQuery更新语法,该语法允许您在存储在数据库中的文档中插入节点、替换节点和删除节点。在eXist数据库中,eXist的XQuery更新语法的文档位于。假设(1)您的CSV文件已经在数据库中,并且(2)您希望将CSV转换为XML的结果存储在新的XML文件中,那么XQuery有3个部分:
let $csv-file := '/db/myCSV.csv'
let $csv-binary := util:binary-doc($csv-file)
let $csv := util:binary-to-string($csv-binary)
let $xml := local:csv-to-xml($csv)
return
xmldb:store('/db', 'createXML.xml', $xml)
这将把转换后的myCSV.csv版本作为createXML.xml存储在eXist数据库的根目录下:/db/createXML.xml
相反,如果您希望将XML结果附加到现有XML文件中,则需要应用XQuery更新语法,该语法允许您在存储在数据库中的文档中插入节点、替换节点和删除节点。在eXist数据库中,eXist的XQuery更新语法的文档位于。请不要进行手动代码标记,为此使用标记功能。节省一点,这会使阅读问题变得更困难。对于您的问题:我想注释不会出现在csv文件中,因为这不是常见的做法(而且它将属于最后一个标题字段)。请不要手动进行代码标记,使用标记功能。节省一点,这会使阅读问题变得更困难。对于您的问题:我猜注释不会出现在csv文件中,因为这不是常见的做法(它将属于最后一个标题字段,
let $csv-file := '/db/myCSV.csv'
let $csv-binary := util:binary-doc($csv-file)
let $csv := util:binary-to-string($csv-binary)
let $xml := local:csv-to-xml($csv)
return
xmldb:store('/db', 'createXML.xml', $xml)