A parser for a useful subset of the `XML` specification. A from-scratch `XML` implementation, loosely modelled on the [[ spec; https://www.w3.org/TR/2006/REC-xml11-20060816 ]]. Features: - Supports enough of the XML 1.0/1.1 spec to handle the 99.9% of XML documents in common current usage. - Simple to understand and use. Small. Caveats: - We do NOT support HTML in this package, as that may or may not be valid XML. If it works, great. If it doesn't, that's not considered a bug. - We do NOT support `UTF-16`. If you have a `UTF-16` XML file, please convert it to `UTF-8` first. Also, our condolences. - `<[!ELEMENT` and `<[!ATTLIST` are not supported, and will be either ignored or return an error depending on the parser options. MAYBE: - XML writer? - Serialize/deserialize Odin types? For a full example, see: [[ core/encoding/xml/example; https://github.com/odin-lang/Odin/tree/master/core/encoding/xml/example ]]

Collection Info

View Source
Collection
core
Path
encoding/xml
Entries
55

Source Files

Constants

5

DEFAULT_OPTIONS #

Source
DEFAULT_OPTIONS :: Options{flags = {.Ignore_Unsupported}, expected_doctype = ""}

Types

16

Procedures

33

load_from_file #

Source
load_from_file :: proc(filename: string, options: Options = DEFAULT_OPTIONS, error_handler: proc(pos: Pos, msg: string, args: ..any) = default_error_handler, allocator := context.allocator) -> (doc: ^Document, err: Error) {…}

Load an XML file

scan_comment #

Source
scan_comment :: proc(t: ^Tokenizer) -> (comment: string, err: Error) {…}

A comment ends when we see -->, preceded by a character that's not a dash. "For compatibility, the string "--" (double-hyphen) must not occur within comments." See: https://www.w3.org/TR/2006/REC-xml11-20060816/#dt-comment Thanks to the length (4) of the comment start, we also have enough lookback, and the peek at the next byte asserts that there's at least one more character that's a `>`.

Procedure Groups

1