class Nokogiri::XML::Reader
Nokogiri::XML::Reader parses an XML document similar to the way a cursor would move. The Reader is given an XML document, and yields nodes to an each block.
Here is an example of usage:
reader = Nokogiri::XML::Reader(" <x xmlns:tenderlove='http://tenderlovemaking.com/'> <tenderlove:foo awesome='true'>snuggles!</tenderlove:foo> </x> ") reader.each do |node| # node is an instance of Nokogiri::XML::Reader puts node.name end
Note that #each can only be called once!! Once the cursor moves through the entire document, you must parse the document again. So make sure that you capture any information you need during the first iteration.
The Reader parser is good for when you need the speed of a SAX parser, but do not want to write a Document handler.
Constants
- TYPE_ATTRIBUTE
Attribute node type
- TYPE_CDATA
CDATA node type
- TYPE_COMMENT
Comment node type
- TYPE_DOCUMENT
Document node type
- TYPE_DOCUMENT_FRAGMENT
Document Fragment node type
- TYPE_DOCUMENT_TYPE
Document Type node type
- TYPE_ELEMENT
Element node type
- TYPE_END_ELEMENT
Element end node type
- TYPE_END_ENTITY
Entity end node type
- TYPE_ENTITY
Entity node type
- TYPE_ENTITY_REFERENCE
Entity Reference node type
- TYPE_NONE
- TYPE_NOTATION
Notation node type
- TYPE_PROCESSING_INSTRUCTION
PI node type
- TYPE_SIGNIFICANT_WHITESPACE
Significant Whitespace node type
- TYPE_TEXT
Text node type
- TYPE_WHITESPACE
Whitespace node type
- TYPE_XML_DECLARATION
XML Declaration node type
Attributes
The encoding for the document
A list of errors encountered while parsing
The XML source
Public Instance Methods
Get a list of attributes for the current node
# File lib/nokogiri/xml/reader.rb, line 97 def attribute_nodes nodes = attr_nodes nodes.each { |v| v.instance_variable_set(:@_r, self) } nodes end
Get a list of attributes for the current node.
# File lib/nokogiri/xml/reader.rb, line 89 def attributes Hash[attribute_nodes.map { |node| [node.name, node.to_s] }].merge(namespaces || {}) end
Move the cursor through the document yielding the cursor to the block
# File lib/nokogiri/xml/reader.rb, line 105 def each while cursor = self.read yield cursor end end