加入收藏 | 设为首页 | 会员中心 | 我要投稿 湘西站长网 (https://www.0743zz.cn/)- 科技、图像技术、AI硬件、数据采集、智能营销!
当前位置: 首页 > 运营中心 > 网站设计 > 教程 > 正文

XQuery解析CSV示例

发布时间:2024-01-01 01:08:50 所属栏目:教程 来源:DaWei
导读: 如果希望将逗号分隔值(CSV)文本的文件解析为xml结构,或者有一个具有非常相似的行/字段结构的平面文件,希望将其转换为XML格式。

这里将使用tokenize($input, '\n')函数将输入文
如果希望将逗号分隔值(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>

(编辑:湘西站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章