class XML::Reader
Overview
XML::Reader
is a parser for XML that iterates a XML document.
require "xml"
reader = XML::Reader.new(<<-XML)
<message>Hello XML!</message>
XML
reader.read
reader.name # => "message"
reader.read
reader.value # => "Hello XML!"
This is an alternative approach to XML.parse
which parses an entire document
into an XML data structure.
XML::Reader
offers more control and does not need to store the XML document
in memory entirely. The latter is especially useful for large documents with
the IO
-based constructor.
WARNING This type is not concurrency-safe.
Defined in:
xml/reader.crxml/reader/type.cr
Constructors
-
.new(str : String, options : XML::ParserOptions = XML::ParserOptions.default)
Creates a new reader from a string.
-
.new(io : IO, options : XML::ParserOptions = XML::ParserOptions.default)
Creates a new reader from an IO.
Instance Method Summary
-
#[](attribute : String) : String
Gets the attribute content for the attribute given by name.
-
#[]?(attribute : String) : String | Nil
Gets the attribute content for the attribute given by name.
-
#attributes_count : Int32
Returns attribute count of the node.
-
#depth : Int32
Returns the current nesting depth of the reader.
-
#empty_element? : Bool
Checks if the node is an empty element.
-
#errors : Array(XML::Error)
Returns the errors reported while parsing.
-
#expand : XML::Node
Expands the node to a
XML::Node
that can be searched with XPath etc. -
#expand? : XML::Node | Nil
Expands the node to a
XML::Node
that can be searched with XPath etc. -
#has_attributes? : Bool
Checks if the node has any attributes.
-
#move_to_attribute(name : String) : Bool
Moves to the
XML::Reader::Type::ATTRIBUTE
with the specified name. -
#move_to_element : Bool
Moves from the
XML::Reader::Type::ATTRIBUTE
to its containingXML::Reader::Type::ELEMENT
. -
#move_to_first_attribute : Bool
Moves to the first
XML::Reader::Type::ATTRIBUTE
of the node. -
#move_to_next_attribute : Bool
Moves to the next
XML::Reader::Type::ATTRIBUTE
of the node. -
#name : String
Returns the name of the node.
-
#next : Bool
Moves the reader to the next node while skipping subtrees.
-
#next_sibling : Bool
Moves the reader to the next sibling node while skipping subtrees.
-
#node_type : XML::Reader::Type
Returns the
XML::Reader::Type
of the node. -
#read : Bool
Moves the reader to the next node.
-
#read_inner_xml : String
Returns the node's XML content including subtrees.
-
#read_outer_xml : String
Returns the XML for the node and its content including subtrees.
-
#to_unsafe : LibXML::XMLTextReader
Returns a reference to the underlying
LibXML::XMLTextReader
. -
#value : String
Returns the text content of the node.
Instance methods inherited from class Reference
==(other : self)==(other : JSON::Any)
==(other : YAML::Any)
==(other) ==, dup dup, hash(hasher) hash, initialize initialize, inspect(io : IO) : Nil inspect, object_id : UInt64 object_id, pretty_print(pp) : Nil pretty_print, same?(other : Reference) : Bool
same?(other : Nil) same?, to_s(io : IO) : Nil to_s
Constructor methods inherited from class Reference
new
new
Instance methods inherited from class Object
! : Bool
!,
!=(other)
!=,
!~(other)
!~,
==(other)
==,
===(other : JSON::Any)===(other : YAML::Any)
===(other) ===, =~(other) =~, as(type : Class) as, as?(type : Class) as?, class class, dup dup, hash(hasher)
hash hash, in?(collection : Object) : Bool
in?(*values : Object) : Bool in?, inspect(io : IO) : Nil
inspect : String inspect, is_a?(type : Class) : Bool is_a?, itself itself, nil? : Bool nil?, not_nil!(message)
not_nil! not_nil!, pretty_inspect(width = 79, newline = "\n", indent = 0) : String pretty_inspect, pretty_print(pp : PrettyPrint) : Nil pretty_print, responds_to?(name : Symbol) : Bool responds_to?, tap(&) tap, to_json(io : IO) : Nil
to_json : String to_json, to_pretty_json(indent : String = " ") : String
to_pretty_json(io : IO, indent : String = " ") : Nil to_pretty_json, to_s(io : IO) : Nil
to_s : String to_s, to_yaml(io : IO) : Nil
to_yaml : String to_yaml, try(&) try, unsafe_as(type : T.class) forall T unsafe_as
Class methods inherited from class Object
from_json(string_or_io, root : String)from_json(string_or_io) from_json, from_yaml(string_or_io : String | IO) from_yaml
Constructor Detail
Creates a new reader from a string.
See XML::ParserOptions.default
for default options.
Creates a new reader from an IO.
See XML::ParserOptions.default
for default options.
Instance Method Detail
Gets the attribute content for the attribute given by name.
Raises KeyError
if attribute is not found.
Gets the attribute content for the attribute given by name.
Returns nil
if attribute is not found.
Expands the node to a XML::Node
that can be searched with XPath etc.
The returned XML::Node
is only valid until the next call to #read
.
Raises a XML::Error
if the node could not be expanded.
Expands the node to a XML::Node
that can be searched with XPath etc.
The returned XML::Node
is only valid until the next call to #read
.
Returns nil
if the node could not be expanded.
Moves to the XML::Reader::Type::ATTRIBUTE
with the specified name.
Moves from the XML::Reader::Type::ATTRIBUTE
to its containing XML::Reader::Type::ELEMENT
.
Moves to the first XML::Reader::Type::ATTRIBUTE
of the node.
Moves to the next XML::Reader::Type::ATTRIBUTE
of the node.
Moves the reader to the next sibling node while skipping subtrees.
Returns the XML for the node and its content including subtrees.
Returns a reference to the underlying LibXML::XMLTextReader
.