\\// ||\/|| ||  _  ||\/|| ||@|| ~++~ ||@|| ||))
//\\ ||  || ||_    ||  || ||_||  ||  ||_|| ||\\

v 0.1.1

@GitHub: github.com/abhishekkr/rubygem_xml_motor @RubyGems: rubygems.org/gems/xml-motor

for support contact:

mail: [email protected]
http://www.twitter.com/aBionic

the main development for this algo (to be done in other languages too) is handled in github.com/abhishekkr/axml-motor and you could find the test-cases in there too, to proceed on your own

A new short XML Parsing Algorithm implemented directly in >500 lines. An easy-to-use XML Parser without any Native Dependencies.

[How To Use]:

  Loading:
   + $ gem install xml-motor
   + 'require' the 'xml-motor'

  Usage:
     [[ To Fetch Just Attribute Values ]]
       str = {XML_DATA}
       nodes_ = XMLMotor.splitter str
       tags_ = XMLMotor.splitter nodes_
       XMLMotor.xmlattrib 'attrib_to_fetch_value', nodes_, tags_
       XMLMotor.xmlattrib 'attrib_to_fetch_value', nodes_, tags_, <_TAG_>
       XMLMotor.xmlattrib 'attrib_to_fetch_value', nodes_, tags_, <_TAG_>, "ATTRIB_KEY"
       XMLMotor.xmlattrib 'attrib_to_fetch_value', nodes_, tags_, <_TAG_>, "ATTRIB_KEY="
       XMLMotor.xmlattrib 'attrib_to_fetch_value', nodes_, tags_, <_TAG_>, "ATTRIB_KEY=ATTRIB_VALUE"
       XMLMotor.xmlattrib 'attrib_to_fetch_value', nodes_, tags_, <_TAG_>, "=ATTRIB_VALUE"

     [[ To Search More Than One QUERIES ]]
       str = {XML_DATA}
       nodes_ = XMLMotor.splitter str
       tags_ = XMLMotor.indexify nodes_
       nodes_array = XMLMotor.xmldata nodes_, tags_, "_TAG_"
       nodes_array = XMLMotor.xmldata nodes_, tags_, "_TAG_", "ATTRIB_KEY=ATTRIB_VALUE"
       nodes_array = XMLMotor.xmldata nodes_, tags_, nil, "ATTRIB_KEY=ATTRIB_VALUE"
       nodes_array = XMLMotor.xmldata nodes_, tags_, nil, "ATTRIB_KEY"
       nodes_array = XMLMotor.xmldata nodes_, tags_, nil, "='ATTRIB_VALUE'"
       >>>>> for having root-node-tag also in returned result <<<<<
       nodes_array = XMLMotor.xmldata nodes_, tags_, "_TAG_", nil, true
       nodes_array = XMLMotor.xmldata nodes_, tags_, "_TAG_", "ATTRIB_KEY=ATTRIB_VALUE", true
       nodes_array = XMLMotor.xmldata nodes_, tags_, "_TAG_", ["ATTRIB_KEY=ATTRIB_VALUE"], true
       nodes_array = XMLMotor.xmldata nodes_, tags_, "_TAG_", ["KEY1=VALUE1", "KEY2=VALUE2"...], true
       nodes_array = XMLMotor.xmldata nodes_, tags_, nil, ["KEY1=VALUE1", "KEY2=VALUE2"...], true
       nodes_array = XMLMotor.xmldata nodes_, tags_, nil, "ATTRIB_KEY=ATTRIB_VALUE", true

     [[ To Search Just One QUERY ]]
       nodes_array = XMLMotor.get_node_from_file "_XML_FILE_", "_TAG_"
       nodes_array = XMLMotor.get_node_from_file "_XML_FILE_", "_TAG_", "ATTRIB_KEY=ATTRIB_VALUE"
       nodes_array = XMLMotor.get_node_from_content "_XML_DATA_", "_TAG_"
       nodes_array = XMLMotor.get_node_from_content "_XML_DATA_", "_TAG_", "ATTRIB_KEY=ATTRIB_VALUE"
       nodes_array = XMLMotor.get_node_from_file "_XML_FILE_", nil, "ATTRIB_KEY=ATTRIB_VALUE"
       nodes_array = XMLMotor.get_node_from_content "_XML_DATA_", nil, "ATTRIB_KEY=ATTRIB_VALUE"
       >>>>> for having root-node-tag also in returned result <<<<<
       nodes_array = XMLMotor.get_node_from_file "_XML_FILE_", "_TAG_", nil, true
       nodes_array = XMLMotor.get_node_from_content "_XML_DATA_", "_TAG_", "ATTRIB_KEY=ATTRIB_VALUE", true
       nodes_array = XMLMotor.get_node_from_content "_XML_DATA_", "_TAG_", ["ATTRIB_KEY=ATTRIB_VALUE"], true
       nodes_array = XMLMotor.get_node_from_content "_XML_DATA_", "_TAG_", ["KEY1=VALUE1", "KEY2=VALUE2"...], true
       nodes_array = XMLMotor.get_node_from_content "_XML_DATA_", "_TAG_", ["KEY1=VALUE1", "KEY2=VALUE2"...], true
       nodes_array = XMLMotor.get_node_from_content "_XML_DATA_", nil, "ATTRIB_KEY=ATTRIB_VALUE", true
       nodes_array = XMLMotor.get_node_from_content "_XML_DATA_", nil, ["KEY1=VALUE1", "KEY2=VALUE2"...], true

  Example Calls As Code:
   + XMLMotor.get_node_from_content "<A>a</A><B><A>ba</A></B>", "A"
       RETURNS: ["a", "ba"]
   + XMLMotor.get_node_from_content "<A>a</A><B><A>ba</A></B>", "B.A"
       RETURNS: ["ba"]
   + XMLMotor.get_node_from_content "<A i='1'>a</A><B><A i='2'>ba</A></B>", "A", "i='1'"
       RETURNS: ["a"]

To turn on the verbosity for errors in XML-Motor, set an Environment value for ‘VERBOSE’.