如何使用 expath 和 Xquery 获取 CSV 文件?
how to use expath and Xquery to fetch a CSV file?
这个 example of expath 如何适应直接从网站抓取 和存储 CSV 文件?
xquery version "3.1";
import module namespace hc = "http://expath.org/ns/http-client";
let $url := "https://www.kingjamesbibleonline.org/Genesis-Chapter-1_Original-1611-KJV/"
let $request :=
<hc:request href="{$url}" method="GET">
<hc:header name="Connection" value="close"/>
</hc:request>
return
hc:send-request($request)
正在浏览:
http://www.bccdc.ca/health-info/diseases-conditions/covid-19/data
具体的CSV文件为:
http://www.bccdc.ca/Health-Info-Site/Documents/BCCDC_COVID19_Dashboard_Case_Details.csv
当然,有多种方法可以获取该文件。但是,如何用上面的 xquery 来完成呢?
显然,更改 URL 是起点,这确实会导致控制台打印一个大的 CSV 文件。
正如@MartinHonnen 已经指出的那样,BaseX 有一个 CSV 模块。
这里是使用方法。
csv 文件addressbook.csv
FName, LName, Address, City
John, Doe, 3851 SW 52nd St., Miami
Mary, Dowson, 770 SE 21nd St., Orlando
XQuery
let $text := file:read-text("c:\Users\Yitzhak\Downloads\addressbook.csv")
return csv:parse($text, map { 'header': true() })
输出
<csv>
<record>
<FName>John</FName>
<LName> Doe</LName>
<Address> 3851 SW 52nd St.</Address>
<City> Miami</City>
</record>
<record>
<FName>Mary</FName>
<LName> Dowson</LName>
<Address> 770 SE 21nd St.</Address>
<City> Orlando</City>
</record>
</csv>
这个 example of expath 如何适应直接从网站抓取 和存储 CSV 文件?
xquery version "3.1";
import module namespace hc = "http://expath.org/ns/http-client";
let $url := "https://www.kingjamesbibleonline.org/Genesis-Chapter-1_Original-1611-KJV/"
let $request :=
<hc:request href="{$url}" method="GET">
<hc:header name="Connection" value="close"/>
</hc:request>
return
hc:send-request($request)
正在浏览:
http://www.bccdc.ca/health-info/diseases-conditions/covid-19/data
具体的CSV文件为:
http://www.bccdc.ca/Health-Info-Site/Documents/BCCDC_COVID19_Dashboard_Case_Details.csv
当然,有多种方法可以获取该文件。但是,如何用上面的 xquery 来完成呢?
显然,更改 URL 是起点,这确实会导致控制台打印一个大的 CSV 文件。
正如@MartinHonnen 已经指出的那样,BaseX 有一个 CSV 模块。
这里是使用方法。
csv 文件addressbook.csv
FName, LName, Address, City
John, Doe, 3851 SW 52nd St., Miami
Mary, Dowson, 770 SE 21nd St., Orlando
XQuery
let $text := file:read-text("c:\Users\Yitzhak\Downloads\addressbook.csv")
return csv:parse($text, map { 'header': true() })
输出
<csv>
<record>
<FName>John</FName>
<LName> Doe</LName>
<Address> 3851 SW 52nd St.</Address>
<City> Miami</City>
</record>
<record>
<FName>Mary</FName>
<LName> Dowson</LName>
<Address> 770 SE 21nd St.</Address>
<City> Orlando</City>
</record>
</csv>