Feature #9379 ยป libxml-as-xmlrpc-parser.diff
lib/xmlrpc/config.rb (working copy) | ||
---|---|---|
# * XMLParser::XMLStreamParser (fastest)
|
||
# * XMLParser::REXMLStreamParser
|
||
# * XMLParser::XMLScanStreamParser
|
||
# * XMLParser::LibXMLStreamParser
|
||
DEFAULT_PARSER = XMLParser::REXMLStreamParser
|
||
# enable <code><nil/></code> tag
|
lib/xmlrpc/parser.rb (working copy) | ||
---|---|---|
end
|
||
end
|
||
class LibXMLStreamParser < AbstractStreamParser
|
||
def initialize
|
||
require 'libxml'
|
||
@parser_class = LibXMLStreamListener
|
||
end
|
||
class LibXMLStreamListener
|
||
include StreamParserMixin
|
||
def on_start_element_ns(name, attributes, prefix, uri, namespaces)
|
||
startElement(name)
|
||
end
|
||
def on_end_element_ns(name, prefix, uri)
|
||
endElement(name)
|
||
end
|
||
alias :on_characters :character
|
||
alias :on_cdata_block :character
|
||
def method_missing(*a)
|
||
end
|
||
def parse(str)
|
||
parser = LibXML::XML::SaxParser.string(str)
|
||
parser.callbacks = self
|
||
parser.parse()
|
||
end
|
||
end
|
||
end
|
||
XMLParser = XMLTreeParser
|
||
NQXMLParser = NQXMLTreeParser
|
||
Classes = [XMLStreamParser, XMLTreeParser,
|
||
NQXMLStreamParser, NQXMLTreeParser,
|
||
REXMLStreamParser, XMLScanStreamParser]
|
||
REXMLStreamParser, XMLScanStreamParser,
|
||
LibXMLStreamParser]
|
||
# yields an instance of each installed parser
|
||
def self.each_installed_parser
|