xml-motor 0.0.8 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README +35 -6
- data/lib/xml-motor.rb +24 -29
- data/lib/xml-motor/version.rb +1 -1
- metadata +2 -2
data/README
CHANGED
@@ -28,22 +28,34 @@ An easy-to-use XML Parser without any Native Dependencies.
|
|
28
28
|
|
29
29
|
Usage:
|
30
30
|
[[ To Search Just One QUERY ]]
|
31
|
-
nodes_array = XMLMotor.get_node_from_file "_XML_FILE_"
|
32
|
-
nodes_array = XMLMotor.get_node_from_file "_XML_FILE_", "ATTRIB_KEY=ATTRIB_VALUE"
|
33
|
-
nodes_array = XMLMotor.get_node_from_content "_XML_DATA_"
|
34
|
-
nodes_array = XMLMotor.get_node_from_content "_XML_DATA_", "ATTRIB_KEY=ATTRIB_VALUE"
|
31
|
+
nodes_array = XMLMotor.get_node_from_file "_XML_FILE_", "_TAG_"
|
32
|
+
nodes_array = XMLMotor.get_node_from_file "_XML_FILE_", "_TAG_", "ATTRIB_KEY=ATTRIB_VALUE"
|
33
|
+
nodes_array = XMLMotor.get_node_from_content "_XML_DATA_", "_TAG_"
|
34
|
+
nodes_array = XMLMotor.get_node_from_content "_XML_DATA_", "_TAG_", "ATTRIB_KEY=ATTRIB_VALUE"
|
35
|
+
nodes_array = XMLMotor.get_node_from_file "_XML_FILE_", nil, "ATTRIB_KEY=ATTRIB_VALUE"
|
36
|
+
nodes_array = XMLMotor.get_node_from_content "_XML_DATA_", nil, "ATTRIB_KEY=ATTRIB_VALUE"
|
35
37
|
>>>>> for having root-node-tag also in returned result <<<<<
|
36
|
-
nodes_array = XMLMotor.get_node_from_file "_XML_FILE_", nil, true
|
37
|
-
nodes_array = XMLMotor.get_node_from_content "_XML_DATA_", "ATTRIB_KEY=ATTRIB_VALUE", true
|
38
|
+
nodes_array = XMLMotor.get_node_from_file "_XML_FILE_", "_TAG_", nil, true
|
39
|
+
nodes_array = XMLMotor.get_node_from_content "_XML_DATA_", "_TAG_", "ATTRIB_KEY=ATTRIB_VALUE", true
|
40
|
+
nodes_array = XMLMotor.get_node_from_content "_XML_DATA_", "_TAG_", ["ATTRIB_KEY=ATTRIB_VALUE"], true
|
41
|
+
nodes_array = XMLMotor.get_node_from_content "_XML_DATA_", "_TAG_", ["KEY1=VALUE1", "KEY2=VALUE2"...], true
|
42
|
+
nodes_array = XMLMotor.get_node_from_content "_XML_DATA_", "_TAG_", ["KEY1=VALUE1", "KEY2=VALUE2"...], true
|
43
|
+
nodes_array = XMLMotor.get_node_from_content "_XML_DATA_", nil, "ATTRIB_KEY=ATTRIB_VALUE", true
|
44
|
+
nodes_array = XMLMotor.get_node_from_content "_XML_DATA_", nil, ["KEY1=VALUE1", "KEY2=VALUE2"...], true
|
38
45
|
[[ To Search More Than One QUERIES ]]
|
39
46
|
str = {XML_DATA}
|
40
47
|
nodes_ = XMLMotorEngine._splitter_ str
|
41
48
|
tags_ = XMLMotorEngine._indexify_ nodes_
|
42
49
|
nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, "_TAG_"
|
43
50
|
nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, "_TAG_", "ATTRIB_KEY=ATTRIB_VALUE"
|
51
|
+
nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, nil, "ATTRIB_KEY=ATTRIB_VALUE"
|
44
52
|
>>>>> for having root-node-tag also in returned result <<<<<
|
45
53
|
nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, "_TAG_", nil, true
|
46
54
|
nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, "_TAG_", "ATTRIB_KEY=ATTRIB_VALUE", true
|
55
|
+
nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, "_TAG_", ["ATTRIB_KEY=ATTRIB_VALUE"], true
|
56
|
+
nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, "_TAG_", ["KEY1=VALUE1", "KEY2=VALUE2"...], true
|
57
|
+
nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, nil, ["KEY1=VALUE1", "KEY2=VALUE2"...], true
|
58
|
+
nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, nil, "ATTRIB_KEY=ATTRIB_VALUE", true
|
47
59
|
|
48
60
|
Example Calls As Code:
|
49
61
|
+ XMLMotor.get_node_from_content "<A>a</A><B><A>ba</A></B>", "A"
|
@@ -57,6 +69,23 @@ An easy-to-use XML Parser without any Native Dependencies.
|
|
57
69
|
=====================================================================
|
58
70
|
CHANGE-LOG
|
59
71
|
=====================================================================
|
72
|
+
Changes from v0.0.10 to v0.1.0
|
73
|
+
[] support added to search for xml nodes just by using their attributes without any tag-name
|
74
|
+
for e.g.
|
75
|
+
nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, nil, "ATTRIB_KEY=ATTRIB_VALUE", true
|
76
|
+
nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, nil, ["ATTRIB_KEY=ATTRIB_VALUE"], true
|
77
|
+
nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, nil, ["KEY1=VALUE1", "KEY2=VALUE2"...]
|
78
|
+
=====================================================================
|
79
|
+
Changes from v0.0.9 to v0.0.10
|
80
|
+
[] xml tag name match corrected to be case-insensitive
|
81
|
+
=====================================================================
|
82
|
+
Changes from v0.0.8 to v0.0.9
|
83
|
+
[] option to filter result for multiple attributes key-value pair if sent as an array of "ATTRIB_KEY = ATTRIB_VALUE"
|
84
|
+
for e.g.
|
85
|
+
nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, "_TAG_", "ATTRIB_KEY=ATTRIB_VALUE", true
|
86
|
+
nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, "_TAG_", ["ATTRIB_KEY=ATTRIB_VALUE"], true
|
87
|
+
nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, "_TAG_", ["KEY1=VALUE1", "KEY2=VALUE2"...], true
|
88
|
+
=====================================================================
|
60
89
|
Changes from v0.0.7 to v0.0.8
|
61
90
|
[] avail the result inclusive of root-node-value with an extra 'true' after attrib/nil
|
62
91
|
for e.g.
|
data/lib/xml-motor.rb
CHANGED
@@ -17,7 +17,7 @@ module XMLUtils
|
|
17
17
|
end
|
18
18
|
|
19
19
|
module XMLIndexHandler
|
20
|
-
def self.
|
20
|
+
def self.get_tag_indexes(xml_motor, tag)
|
21
21
|
xml_idx_to_find = []
|
22
22
|
begin
|
23
23
|
xml_motor.xmltags[tag.split(".")[0]].each_value {|val| xml_idx_to_find.push val }
|
@@ -66,7 +66,7 @@ module XMLChopper
|
|
66
66
|
tag_name = in_tag_split.first
|
67
67
|
attribzone = in_tag_split[1..-1].flatten.join(' ')
|
68
68
|
attrs = get_attribute_hash attribzone
|
69
|
-
[[tag_name,attrs],out_tag]
|
69
|
+
[[tag_name.downcase, attrs],out_tag]
|
70
70
|
end
|
71
71
|
|
72
72
|
def self.get_attribute_hash(attribzone)
|
@@ -104,9 +104,6 @@ module XMLJoiner
|
|
104
104
|
end
|
105
105
|
end
|
106
106
|
|
107
|
-
##
|
108
|
-
# main class
|
109
|
-
|
110
107
|
module XMLMotorEngine
|
111
108
|
def self._splitter_(xmldata)
|
112
109
|
@xmlnodes = [xmldata.split(/</)[0]]
|
@@ -122,7 +119,7 @@ module XMLMotorEngine
|
|
122
119
|
idx = 1
|
123
120
|
depth = 0
|
124
121
|
@xmlnodes[1..-1].each do |xnode|
|
125
|
-
tag_name = xnode[0][0].strip
|
122
|
+
tag_name = xnode[0][0].strip.downcase
|
126
123
|
unless tag_name.match(/^\/.*/) then
|
127
124
|
@xmltags[tag_name] ||= {}
|
128
125
|
@xmltags[tag_name][depth] ||= []
|
@@ -138,19 +135,24 @@ module XMLMotorEngine
|
|
138
135
|
@xmltags
|
139
136
|
end
|
140
137
|
|
141
|
-
def self.
|
142
|
-
|
143
|
-
|
144
|
-
|
138
|
+
def self._get_attrib_key_val_ (attrib)
|
139
|
+
attrib_key = attrib.split(/=/)[0].strip
|
140
|
+
attrib_val = attrib.split(/=/)[1..-1].join.strip
|
141
|
+
[attrib_key, XMLUtils.dbqot_string(attrib_val)]
|
142
|
+
end
|
143
|
+
|
144
|
+
def self._grab_my_node_ (index_to_find, attrib_to_find=nil, with_tag=false)
|
145
|
+
unless attrib_to_find.nil? or attrib_to_find.empty?
|
146
|
+
attrib_keyval = [attrib_to_find].flatten.collect{|keyval| _get_attrib_key_val_ keyval }
|
145
147
|
end
|
146
148
|
nodes = []
|
147
|
-
node_count =
|
149
|
+
node_count = index_to_find.size/2 -1
|
148
150
|
0.upto node_count do |ncount|
|
149
|
-
node_start =
|
150
|
-
node_stop =
|
151
|
-
unless attrib_to_find.nil?
|
151
|
+
node_start = index_to_find[ncount*2]
|
152
|
+
node_stop = index_to_find[ncount*2 +1]
|
153
|
+
unless attrib_to_find.nil? or attrib_to_find.empty?
|
152
154
|
next if @xmlnodes[node_start][0][1].nil?
|
153
|
-
next
|
155
|
+
next if attrib_keyval.collect{|keyval| @xmlnodes[node_start][0][1][keyval.first] == keyval.last}.include? false
|
154
156
|
end
|
155
157
|
nodes[ncount] ||= ""
|
156
158
|
nodes[ncount] += @xmlnodes[node_start][1] unless @xmlnodes[node_start][1].nil?
|
@@ -170,20 +172,15 @@ module XMLMotorEngine
|
|
170
172
|
end
|
171
173
|
|
172
174
|
def self.xml_extracter(tag_to_find=nil, attrib_to_find=nil, with_tag=false)
|
173
|
-
|
175
|
+
index_to_find = []
|
174
176
|
if attrib_to_find.nil? and tag_to_find.nil?
|
175
|
-
|
176
|
-
xml_to_find = XMLIndexHandler.get_node_indexes self, tag_to_find
|
177
|
-
my_nodes = _grab_my_node_ xml_to_find, nil, with_tag
|
177
|
+
return nil
|
178
178
|
elsif tag_to_find.nil?
|
179
|
-
|
180
|
-
XMLStdout._nfo "Just attrib-based search to come"
|
181
|
-
#
|
179
|
+
index_to_find = @xmltags.collect {|xtag| xtag[1].collect {|val| val[1] }}.flatten
|
182
180
|
else
|
183
|
-
|
184
|
-
my_nodes = _grab_my_node_ xml_to_find, attrib_to_find, with_tag
|
181
|
+
index_to_find = XMLIndexHandler.get_tag_indexes self, tag_to_find.downcase
|
185
182
|
end
|
186
|
-
|
183
|
+
_grab_my_node_ index_to_find, attrib_to_find, with_tag
|
187
184
|
end
|
188
185
|
|
189
186
|
def self.xml_miner(xmldata, tag_to_find=nil, attrib_to_find=nil, with_tag=false)
|
@@ -194,13 +191,11 @@ module XMLMotorEngine
|
|
194
191
|
end
|
195
192
|
|
196
193
|
def self.xmlnodes(xml_nodes=nil)
|
197
|
-
@xmlnodes = xml_nodes
|
198
|
-
@xmlnodes
|
194
|
+
@xmlnodes = xml_nodes || @xmlnodes
|
199
195
|
end
|
200
196
|
|
201
197
|
def self.xmltags(xml_tags=nil)
|
202
|
-
@xmltags = xml_tags
|
203
|
-
@xmltags
|
198
|
+
@xmltags = xml_tags || @xmltags
|
204
199
|
end
|
205
200
|
|
206
201
|
def self.pre_processed_content(_nodes, _tags=nil, tag_to_find=nil, attrib_to_find=nil, with_tag=false)
|
data/lib/xml-motor/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xml-motor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- abhishekkr
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2012-01-
|
12
|
+
date: 2012-01-25 00:00:00 +05:30
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|