The XML module allows parsing and generating XML documents.
XML#parse
will parse xml from String
or IO
and return xml document as an XML::Node
which represents all kinds of xml nodes.
Example:
require "xml" xml = <<-XML <person id="1"> <firstname>Jane</firstname> <lastname>Doe</lastname> </person> XML document = XML.parse(xml) # : XML::Node person = document.first_element_child # : XML::Node? if person puts person["id"] # "1" : String? puts typeof(person.children) # XML::NodeSet person.children.select(&.element?).each do |child| # Select only element children puts typeof(child) # XML::Node puts child.name # firstname : String puts child.content # Jane : String? end end
Use XML.build
, which uses an XML::Builder
:
require "xml" string = XML.build(indent: " ") do |xml| xml.element("person", id: 1) do xml.element("firstname") { xml.text "Jane" } xml.element("lastname") { xml.text "Doe" } end end string # => "<?xml version=\"1.0\"?>\n<person id=\"1\">\n <firstname>Jane</firstname>\n <lastname>Doe</lastname>\n</person>\n"
Returns the resulting String
of writing XML to the yielded XML::Builder
.
Writes XML document into the given IO
.
Writes XML fragment into the given IO
.
Returns the resulting String
of writing XML to the yielded XML::Builder
.
Parses an XML document from string with options into an XML::Node
.
Parses an XML document from io with options into an XML::Node
.
Parses an HTML document from string with options into an XML::Node
.
Parses an HTML document from io with options into an XML::Node
.
Returns the resulting String
of writing XML to the yielded XML::Builder
.
Builds an XML document (see #document
) including XML declaration ().
require "xml" string = XML.build(indent: " ") do |xml| xml.element("person", id: 1) do xml.element("firstname") { xml.text "Jane" } xml.element("lastname") { xml.text "Doe" } end end string # => "<?xml version=\"1.0\"?>\n<person id=\"1\">\n <firstname>Jane</firstname>\n <lastname>Doe</lastname>\n</person>\n"
Writes XML document into the given IO
. An XML::Builder
is yielded to the block.
Builds an XML document (see #document
) including XML declaration ().
Writes XML fragment into the given IO
. An XML::Builder
is yielded to the block.
Builds an XML fragment without XML declaration ().
Returns the resulting String
of writing XML to the yielded XML::Builder
.
Builds an XML fragment without XML declaration ().
require "xml" string = XML.build_fragment(indent: " ") do |xml| xml.element("person", id: 1) do xml.element("firstname") { xml.text "Jane" } xml.element("lastname") { xml.text "Doe" } end end string # => "<person id=\"1\">\n <firstname>Jane</firstname>\n <lastname>Doe</lastname>\n</person>\n"
Parses an XML document from string with options into an XML::Node
.
See ParserOptions.default
for default options.
Parses an XML document from io with options into an XML::Node
.
See ParserOptions.default
for default options.
Parses an HTML document from string with options into an XML::Node
.
See HTMLParserOptions.default
for default options.
Parses an HTML document from io with options into an XML::Node
.
See HTMLParserOptions.default
for default options.
© 2012–2020 Manas Technology Solutions.
Licensed under the Apache License, Version 2.0.
https://crystal-lang.org/api/0.35.1/XML.html