Ich habe begonnen, VTD (ich schätze VTD-XML) in Java zu verwenden, und für XPath-Lesungen ist es ausgezeichnet. Wo ich jetzt auf ein Problem stoße, ist beim Einfügen von Daten. Sagen wir, ich tue das folgende:
VTDNav nav = preExistingGen.getNav();
AutoPilot pilot = new AutoPilot(nav);
pilot.selectXPath("/Something/SomethingElse");
if (pilot.evalXPath() != -1) {
XMLModifier modifier = new XMLModifier(nav);
modifier.insertAfterElement("<some>content</some>");
}
Ich war davon ausgegangen, dass es sich um eine Echtzeitaktualisierung handelt, die sich im VTDNav widerspiegeln würde. Es sieht so aus, als ob mein Verständnis falsch ist, da das einfache Einfügen des Elementinhalts nichts an der Navigation ändert (wenn ich die VTDNav ausgeben, enthält sie immer noch meine ursprüngliche XML). Der einzige Weg, den ich scheinen kann, um einen Griff auf die neue Xml zu bekommen, ist durch die Ausgabe von der XMLModifier.
modifier.outputAndReparse(); // Gives me a new VTDNav with the new content
Gibt es etwas, das ich hier übersehe? Gibt es eine einfachere Möglichkeit, dies zu tun? Ich wollte in der Lage sein, den neuen Inhalt einzufügen, und dann sofort den neuen Index erhalten. Mein vorhandener Code (mit den Standard-DOM-Klassen) hat eine Tonne von Einfügungen und Updates, und ich muss auch wissen, wo das letzte eingefügte Element im Dokument vorhanden war. Mit outputAndReparse() jedes Mal und dann finden Sie das eingefügte Element (die ich möglicherweise nicht einmal in der Lage, zu garantieren) scheint nicht wie eine plausible Lösung.