require 'nqxml/treeparser'
xmlstr=nil
xmlstr=File.open("Personen.xml") { |f| f.read}
begin
doc = NQXML::TreeParser.new(xmlstr).document
## Beispielcode hier einfügen
rescue NQXML::ParserError => ex
puts "Fehler in Zeile #{ex.line}" +
" bei Zeichen #{ex.column}: #{$!}"
end
Jeder Knoten im Baum hat folgende Attribute:
Daneben gibt es noch einige DOM-typische Funktionen:
Man wird relativ oft eine Möglichkeit benötigen, alle Knoten des Baumes nach einem bestimmten Element zu durchsuchen. Hier ist ein Iterator sinnvoll, der das Ablaufen des Baumes übernimmt und für jeden Knoten einen Codeblock aufruft, der die Abfragelogik enthält.
def traverse(node, &block)
block.call(node)
node.children.each{ |c|
traverse(c, &block)
}
end
## Beispielcode für obiges Listing
traverse(doc.rootNode) { | node |
if node.entity.instance_of?(NQXML::Tag)
p node.entity.name
end
}
Attribute der Entities stehen in der Hashtabelle entity.attrs
zur Verfügung.
if node.entity.instance_of?(NQXML::Tag) &&
node.entity.name=='name' &&
node.entity.attrs['vorname']=='Anastasia'
...