Как можно адаптировать этот пример 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-файла.
синтаксическая или другая ошибка: stackoverflow.com/q/65325993/4531180 с csv:doc
. нужно ли импортировать пространство имен, @MartinHonnen?
Я могу выполнить запрос csv:doc('http://www.bccdc.ca/Health-Info-Site/Documents/BCCDC_COVID19_Dashboard_Case_Details.csv')
в графическом интерфейсе BaseX 9.4 без импорта модуля или пространства имен.
Как уже указывал @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>
BaseX позволяет вам делать
csv:doc('http://www.bccdc.ca/Health-Info-Site/Documents/BCCDC_COVID19_Dashboard_Case_Details.csv')
, например, без сложностей, связанных с использованием EXPath и режима HTTP-запроса/ответа. Модуль CSV задокументирован по адресу docs.basex.org/wiki/CSV_Module. Если вам нужен обычный текст, то естьunparsed-text('http://www.bccdc.ca/Health-Info-Site/Documents/BCCDC_COVID19_Dashboard_Case_Details.csv')