8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
# File 'lib/awis/utils/xml.rb', line 8
def each_node(attributes_in_path = false)
reader = Nokogiri::XML::Reader(@data)
nodes = ['']
reader.each do |node|
if node.node_type == Nokogiri::XML::Reader::TYPE_ELEMENT
if attributes_in_path && node.attributes.size > 0
attributes = []
node.attributes.sort.each do |name, value|
attributes << "@#{name}=#{value}"
end
nodes << "#{node.name}/#{attributes.join('/')}"
else
nodes << node.name
end
path = nodes.join('/')
yield node, path
end
nodes.pop if node.node_type == Nokogiri::XML::Reader::TYPE_END_ELEMENT || node.self_closing?
end
end
|