站长网 教程 XQuery解析CSV示例

XQuery解析CSV示例

XQuery解析CSV示例

如果希望将逗号分隔值(CSV)文本的文件解析为xml结构,或者有一个具有非常相似的行/字段结构的平面文件,希望将其转换为XML格式。

这里将使用tokenize($input, '\n')函数将输入文件分成不同的行。 然后将使用tokenize($input, ',')函数将每一行解析为单独的字段。 请注意,tokenize()将删除前导和尾随空格。

基本例子

let $csv-input-sample :=
'John, Smith, x123
Peg, Jones , x456
Sue, Adams , x789
Dan, McCoy , x321'
let $lines := tokenize($csv-input-sample, '\n')
return
<results>{
  for $line in $lines
  let $fields := tokenize($line, ',')
  return
  <row>{
    for $field in $fields
    return
      <field>{$field}</field>
  }</row>
}</results>
输出结果 –

<results>
   <row>
      <field>John</field>
      <field>Smith</field>
      <field>x123</field>
   </row>
   <row>
      <field>Peg</field>
      <field>Jones</field>
      <field>x456</field>
   </row>
   <row>
      <field>Sue</field>
      <field>Adams</field>
      <field>x789</field>
   </row>
   <row>
      <field>Dan</field>
      <field>McCoy</field>
      <field>x321</field>
   </row>
</results>
第1行中的数据字典示例

第二个示例将使用CSV文件的第一行作为每行每列的元素名称的数据字典。

let $csv :=
'name,faculty
alice,anthropology
bob,biology'
let $lines := tokenize($csv, '\n')
let $head := tokenize($lines[1], ',')
let $body := remove($lines, 1)
return
    <people>
        {
            for $line in $body
            let $fields := tokenize($line, ',')
            return
                <person>
                    {
                        for $key at $pos in $head
                        let $value := $fields[$pos]
                        return
                            element { $key } { $value }
                    }
                </person>
        }
    </people>
输出结果如下 –

<people>
  <person>
    <name>alice</name>
    <faculty>anthropology</faculty>
  </person>
  <person>
    <name>bob</name>
    <faculty>biology</faculty>
  </person>
</people>

本文来自网络,不代表站长网立场,转载请注明出处:https://www.tzzz.com.cn/html/video/2024/0608/46135.html

作者: dawei

【声明】:站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。
联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部