class XMLRPC::XMLParser::XMLTreeParser::XMLParser

Constants

Classes
NQXMLParser
XMLParser

Public Class Methods

each_installed_parser() { |klass| ... } click to toggle source

yields an instance of each installed parser

# File lib/xmlrpc/parser.rb, line 858
def self.each_installed_parser
  XMLRPC::XMLParser::Classes.each do |klass|
    begin
      yield klass.new
    rescue LoadError
    end
  end
end
new() click to toggle source
# File lib/xmlrpc/parser.rb, line 646
  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

  private

  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


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

    methodResponse(node.firstChild)
  end

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

    methodCall(node.firstChild)
  end

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

end

Public Instance Methods

_nodeType(node) click to toggle source
# File lib/xmlrpc/parser.rb, line 663
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) click to toggle source
# File lib/xmlrpc/parser.rb, line 687
def createCleanedTree(str)
  doc = XML::SimpleTreeBuilder.new.parse(str)
  doc.documentElement.normalize
  removeWhitespacesAndComments(doc)
  doc
end
methodCall_document(node) click to toggle source
# File lib/xmlrpc/parser.rb, line 680
def methodCall_document(node)
  assert( node.nodeType == XML::SimpleTree::Node::DOCUMENT )
  hasOnlyOneChild(node, "methodCall")

  methodCall(node.firstChild)
end
methodResponse_document(node) click to toggle source
# File lib/xmlrpc/parser.rb, line 673
def methodResponse_document(node)
  assert( node.nodeType == XML::SimpleTree::Node::DOCUMENT )
  hasOnlyOneChild(node, "methodResponse")

  methodResponse(node.firstChild)
end