======================================================================
\// ||/|| || _ ||/|| ||@|| ++ ||@|| ||))
//\ || || ||_ || || |||| || |||| ||\
======================================================================
v 0.1.1
@GitHub: https://github.com/abhishekkr/rubygem_xml_motor
@RubyGems: http://rubygems.org/gems/xml-motor
the main development for this algo (to be done in other languages too) is handled in
https://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'.
=====================================================================