Changes

Jump to navigation Jump to search
1,273 bytes removed ,  18:39, 1 December 2023
m
Text replacement - "syntaxhighlight" to "pre"
This article is part of the [[Getting StartedAdvanced User's Guide]] Section.It presents the available parsers that can be used to import various data sources in BaseX databases.Please visit the [[Serialization]] article if you want to know how to export data.
=XML Parsers=
==XQuery==
The [[{{Function|Database Module#db:add|db:add]] }} and [[{{Function|Database Module#db:replace|db:replace]] put}} functions can also be used to add new XML documents to the database. The following example query uses the internal XML parser and adds all files to the database <code>DB</code> that are found in the directory <code>2Bimported</code>:
<syntaxhighlight pre lang="'xquery"'>
for $file in file:list("2Bimported")
return db:add('DB', $file, '', map { 'intparse': true() })
</syntaxhighlightpre>
=HTML Parser=
If [http://vrici.lojban.org/~cowan/tagsoup/ TagSoup] is found in the [[Startup#Distributions|classpath]], HTML can be imported in BaseX without any problems. TagSoup ensures that only input is converted to well-formed HTML arrives at the XML parser (correct opening and closing tags, etc.)documents.
If TagSoup is not available on a system, the default XML parser will be used. (Only) , and the import will only succeed if the input is already well-formed XML, (which is usually the import will succeedcase for XHTML documents).
==Installation==
====Downloads====
TagSoup is already included in the full BaseX distributions ({{Code|BaseX.zip}}, {{Code|BaseX.exe}}, etc.). It can also be manually downloaded and embedded on the appropriate platforms.
====Maven====
An easy way to add TagSoup to your project is to follow this stepsas follows:
1. Visit [https://mvnrepository.com/artifact/org.ccil.cowan.tagsoup/tagsoup/ MVN TagSoup Repository]
3. On the first tab, you can see an XML snippet like this:
<syntaxhighlight pre lang="xml">
<dependency>
<groupId>org.ccil.cowan.tagsoup</groupId>
<version>1.2.1</version>
</dependency>
</syntaxhighlightpre>
4. copy that in your own maven project’s Insert the XML fragment into the <code>pom.xml<dependencies></code> file into the element of your project’s <code><dependencies>pom.xml</code> elementfile.
5. don’t forget to run <code>mvn jetty:run</code> again===Debian===
====Debian==== With Debian, TagSoup will automatically be automatically detected and included after it has been installed via:
apt-get install libtagsoup-java
==Options==
TagSoup offers a variety of options to customize the HTML conversion. For the complete list, please visit the [http://vrici.lojban.org/~cowan/XML/tagsoup/#program TagSoup] website. BaseX supportsmost of these options , with a few exceptions:
* '''encoding''': BaseX tries to guess the input encoding, but this can be overwritten by this option.
* '''files''': not supported as the input documents are piped directly to the XML parser.
* '''method''': set to 'xml' as default. If this is set to 'html' ending tags may be missing for instance.
* '''version''': dismissed, as TagSoup always falls back to 'version 1.0', no matter what the input is.
* '''reuse''', '''help''': not supported.
===GUI===
Go to Menu ''Database'' → ''New'' and select "HTML" in the input format combo box.There's an info in the "Parsing" tab about whether TagSoup is available or not. Thesame applies to the "Resources" tab in the "Database Properties" dialog.
These two dialogs come with an input field 'Parameters' where TagSoup optionscan be entered. Keys and values are separated by the equal sign, multiple options are separated by commas, e.g.: <code>method=xml,nons=true</code>.
===Command Line===
Turn on the HTML Parser before parsing documents, and set a file filterand optional parsing options:
SET {{Option|PARSER}} html
SET {{Option|HTMLPARSER}} method=xml,nons=true,nocdata=true,nodefaults=true,nobogons=true,nocolons=true,ignorable=true
SET {{Option|CREATEFILTER}} *.html
SET {{Option|HTMLPARSER}} method=xml,nons=true
===XQuery=== The [[HTML Module]] provides a function for converting HTML to XML documents.
Documents The [[HTML Module]] provides XQuery functions for converting HTML to XML. In addition, all functions that accept [[Options#Parsing|Parsing Options]] can also be converted by specifying the parser and additional optionsused as function argumentswell to convert HTML:
<syntaxhighlight pre lang="'xquery"'>fetch:xmldoc("index.html", map {
'parser': 'html',
'htmlparser': map { 'htmlmethod': false()'xml', 'nodefaultsnons': true() }
})
</syntaxhighlightpre>
=JSON Parser=
With BaseX can also import , JSON documentscan be imported. The resulting format is JSON parsing options are described in the documentation for of the XQuery [[JSON Module]]:.
==GUI==
Go to Menu ''Database'' → ''New'' and select "JSON" in the input format combo box.You can set the following options for parsing JSON documents in the "Parsing" tab: * '''Encoding''': Choose the appropriate encoding of the JSON file.* '''JsonML''': Activate this option if the incoming file is a JsonML file.
==Command Line==
==XQuery==
The [[JSON Module]] provides functions for converting JSON objects to XML documentsIn addition, all functions that accept [[Options#Parsing|Parsing Options]] can be used as well to convert JSON. The following query converts a JSON string to an XML document, using the conversion format {{Code|[[JSON Module#Basic|basic]]}}: <pre lang='xquery'>db:create('json-db', '{ "key": "value" }', 'example.json', map { 'parser': 'json', 'jsonparser': map { 'format': 'basic' }})</pre>
=CSV Parser=
BaseX can be used to import CSV documents. Different alternatives how to proceed The CSV parsing options are shown described in the following:documentation of the [[CSV Module]].
==GUI==
Go to Menu ''Database'' → ''New'' and select "CSV" in the input format combo box.
You can set the following options for parsing CSV documents in the "Parsing" tab: * '''Encoding''': Choose the appropriate encoding of the CSV file.* '''Separator''': Choose the column separator of the CSV file. Possible: <code>comma</code>, <code>semicolon</code>, <code>tab</code> or <code>space</code> or an arbitrary character.* '''Header''': Activate this option if the incoming CSV files have a header line.
==Command Line==
Turn on the Enable CSV Parser Parsing before parsing documents, and set some optional, parser-specific options and a file filter. Unicode code points can be specified as separators; {{Code|32}} is the code point for spaces:
SET {{Option|PARSER}} csv
SET {{Option|CSVPARSER}} encoding=utf-8, linesheader=true, header=false, separator=spacesemicolon
SET {{Option|CREATEFILTER}} *.csv
==XQuery==
The [[CSV Module]] provides a function for converting CSV to XML documents.
Documents In addition, all functions that accept [[Options#Parsing|Parsing Options]] can also be converted by specifying used as well to convert CSV. In the parser in an XQuery function.The following example query adds , all CSV files that from a directory are located in thedirectory {{Code|2Bimported}} added to the a database {{Code|DB}} and interprets, with the first lines line of each file interpreted as column headersheader:
<syntaxhighlight pre lang="'xquery"'>
for $file in file:list("2Bimported", false(), "*.csv")
return db:add("DBcsv-db", $file, "", map {
'parser': 'csv',
'csvparser': map { 'header': true() }
})
</syntaxhighlightpre>
=Text ParserChangelog=
Plain text can be imported as well: ==GUI== Go to Menu ''Database'' → ''New'' and select "TEXT" in the input format combobox.You can set the following option for parsing text documents in the "Parsing" tab: * '''Encoding''': Choose the appropriate encoding of the text file;Version 11.0* '''Lines'''Removed: Activate this option to create a <code>&lt;line&gt;...&lt;/line&gt;</code> element for each line of the input text file. ==Command Line== Turn on the CSV Text Parser before parsing documents and set some optional, parser-specific options and a file filter:  SET {{Option|PARSER}} text SET {{Option|TEXTPARSER}} lines=yes SET {{Option|CREATEFILTER}} * ==XQuery== Similar to the other formats, the text parser can also be specified via XQuery: <syntaxhighlight lang="xquery">for $file in file:list("2Bimported", true(), "*.txt")return db:add("DB", $file, "", map { 'parser': 'text' })</syntaxhighlight> =Changelog=
;Version 7.8
 
* Updated: parser options
;Version 7.7.2
 
* Removed: CSV option "format"
;Version 7.3
 
* Updated: the CSV {{Code|SEPARATOR}} option may now be assigned arbitrary single characters
;Version 7.2
 
* Updated: Enhanced support for TagSoup options
Bureaucrats, editor, reviewer, Administrators
13,554

edits

Navigation menu