Database Reference
In-Depth Information
<page>
<title>
Anarchism
</title>
<id>
12
</id>
<revision>
<id>
408067712
</id>
<timestamp>
2011-01-15T19:28:25Z
</timestamp>
<contributor>
<username>
RepublicanJacobite
</username>
<id>
5223685
</id>
</contributor>
<comment>
Undid revision 408057615 by [[Special:Contributions...
</comment>
<text
xml:space=
"preserve"
>
{{Redirect|Anarchist|the fictional character|
...
[[bat-smg:Anarkezmos]]
</text>
</revision>
</page>
Da wir so clever waren, sind hier alle Informationen enthalten, die wir in
unserem Schema bereits berücksichtigt haben: Titel (Zeilenschlüssel), Text,
Zeitstempel und Autor. Es sollte also nicht allzu schwierig ein, ein Skript zu
schreiben, das die Artikel importiert.
XML-Streaming
Doch der Reihe nach. Das Parsing dieser riesigen XML-Dateien verlangt ein
Streaming a la SAX, weshalb wir damit beginnen wollen. Die grundlegende
FormdesParsingseinerXML-Datei(Datensatz für Datensatz) sieht bei JRuby
in etwa so aus:
hbase/basic_xml_parsing.rb
import
'javax.xml.stream.XMLStreamConstants'
factory = javax.xml.stream.XMLInputFactory.newInstance
reader = factory.createXMLStreamReader(java.lang.System.in)
while
reader.has
_
next
type = reader.next
if
type == XMLStreamConstants::START
_
ELEMENT
tag = reader.local
_
name
# verarbeite Tag
elsif
type == XMLStreamConstants::CHARACTERS
text = reader.text
# verarbeite den Text
elsif
type == XMLStreamConstants::END
_
ELEMENT
# wie START
_
ELEMENT
end
end
Sieht man sich das genauer an, sind hier ein paar Dinge erwähnenswert. Zu-
erst erzeugen wir einen
XMLStreamReader
und verknüpfen ihn mit
java.lang.
System.in
, d. h., das Einlesen erfolgt über die Standardeingabe.