123456789_123456789_123456789_123456789_123456789_

Class: XMLRPC::XMLParser::XMLTreeParser

Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
Instance Chain:
Inherits: XMLRPC::XMLParser::AbstractTreeParser
Defined in: lib/xmlrpc/parser.rb

Overview

Class Method Summary

Instance Method Summary

AbstractTreeParser - Inherited

#parseMethodCall, #parseMethodResponse, #array, #assert, #base64, #boolean, #data, #dateTime, #double, #fault,
#hasOnlyOneChild

Returns, when successfully the only child-node.

#integer, #member, #methodCall, #methodName, #methodResponse, #name, #nodeMustBe, #param, #params,
#removeWhitespacesAndComments

Removes all whitespaces but in the tags i4, i8, int, boolean.…

#string, #struct,
#text

_nodeType is defined in the subclass.

#text_zero_one

The node node has empty string or string.

#v_nil, #value

Constructor Details

.newXMLTreeParser

[ GitHub ]

  
# File 'lib/xmlrpc/parser.rb', line 645

def initialize
  require "xmltreebuilder"

  # The new XMLParser library (0.6.2+) uses a slightly different DOM implementation.
  # The following code removes the differences between both versions.
  if defined? XML::DOM::Builder
    return if defined? XML::DOM::Node::DOCUMENT # code below has been already executed
    klass = XML::DOM::Node
    klass.const_set(:DOCUMENT, klass::DOCUMENT_NODE)
    klass.const_set(:TEXT, klass::TEXT_NODE)
    klass.const_set(:COMMENT, klass::COMMENT_NODE)
    klass.const_set(:ELEMENT, klass::ELEMENT_NODE)
  end
end

Instance Method Details

#_nodeType(node) (private)

[ GitHub ]

  
# File 'lib/xmlrpc/parser.rb', line 662

def _nodeType(node)
  tp = node.nodeType
  if tp == XML::SimpleTree::Node::TEXT then :TEXT
  elsif tp == XML::SimpleTree::Node::COMMENT then :COMMENT
  elsif tp == XML::SimpleTree::Node::ELEMENT then :ELEMENT
  else :ELSE
  end
end

#createCleanedTree(str) (private)

[ GitHub ]

  
# File 'lib/xmlrpc/parser.rb', line 686

def createCleanedTree(str)
  doc = XML::SimpleTreeBuilder.new.parse(str)
  doc.documentElement.normalize
  removeWhitespacesAndComments(doc)
  doc
end

#methodCall_document(node) (private)

[ GitHub ]

  
# File 'lib/xmlrpc/parser.rb', line 679

def methodCall_document(node)
  assert( node.nodeType == XML::SimpleTree::Node::DOCUMENT )
  hasOnlyOneChild(node, "methodCall")

  methodCall(node.firstChild)
end

#methodResponse_document(node) (private)

[ GitHub ]

  
# File 'lib/xmlrpc/parser.rb', line 672

def methodResponse_document(node)
  assert( node.nodeType == XML::SimpleTree::Node::DOCUMENT )
  hasOnlyOneChild(node, "methodResponse")

  methodResponse(node.firstChild)
end