Ich schreibe gerade ein kleines CLI-Programm, das größere XML-Dateien parsen muß. In Swift btw. Es geht dabei um die Auswertung eines japanischen Wörterbuchs.
Qick und dirty parse ich zur Zeit die Daten, also die Wörterbucheinträge und die Daten jeweils innerhalb der Einträge mit xpath-Abfragen, e.g.
Gefühlt verbrate ich damit aber viel zuviel Zeit. Das Parsen der Hauptdatei dauert z.Zt. so um die 60~80 Sekunden auf meiner Hardware. Als Alternative könnte ich mir vorstellen, das ganze über den Zugriff auf die jeweiligen child-Elemente zu lösen, also
Im Gegensatz zum xpath-Ansatz müßte ich dafür aber ziemich viel Code schreiben, ohne zu wissen, ob das im Endergebnis überhaupt etwas bringen würde. Ich habe irgendwie keine Lust, mir auf bloße Mutmaßung hinaus, einen Wolf zu schreiben.
Meine Frage also: Hat hier jemand Erfahrung damit, wie in der Foundation-API der XPath-Ansatz im Verhältnis zu anderen Lösungswegen abschneidet?
Qick und dirty parse ich zur Zeit die Daten, also die Wörterbucheinträge und die Daten jeweils innerhalb der Einträge mit xpath-Abfragen, e.g.
NSXMLNode.nodesForXPath("./a/b/c")
. Besonders praktisch bei speziellen Attributabfragen, zB. NSXMLNode.nodesForXPath("./a/b/c[not(@*)]")
Gefühlt verbrate ich damit aber viel zuviel Zeit. Das Parsen der Hauptdatei dauert z.Zt. so um die 60~80 Sekunden auf meiner Hardware. Als Alternative könnte ich mir vorstellen, das ganze über den Zugriff auf die jeweiligen child-Elemente zu lösen, also
NSXMLNode.children
. Sowas in etwa: for node in xmlNode.children ?? [NSXMLNode]() where node.name == "a" { }
.Im Gegensatz zum xpath-Ansatz müßte ich dafür aber ziemich viel Code schreiben, ohne zu wissen, ob das im Endergebnis überhaupt etwas bringen würde. Ich habe irgendwie keine Lust, mir auf bloße Mutmaßung hinaus, einen Wolf zu schreiben.
Meine Frage also: Hat hier jemand Erfahrung damit, wie in der Foundation-API der XPath-Ansatz im Verhältnis zu anderen Lösungswegen abschneidet?
Das iPhone sagt: "Zum Antworten streichen". Wie? Echt Jetzt? Muß ich erst die Wohnung streichen!?