Я начал использовать VTD (я полагаю, VTD-XML) в Java, и для чтения XPath это отлично. Где я сейчас решаю проблему с вставкой данных. Допустим, я делаю следующее:
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>");
}
Я предполагал, что это обновление в реальном времени, которое будет отражено в VTDNav. Похоже, что мое понимание неверно, так как простая вставка содержимого элемента ничего не делает с навигацией (если я вывожу VTDNav, он все еще содержит мой оригинальный xml). Единственный способ, которым я могу получить представление о новом xml - это вывести его из XMLModifier.
modifier.outputAndReparse(); // Gives me a new VTDNav with the new content
Есть что-то, чего я здесь не хватает? Есть ли более простой способ сделать это? Я хотел иметь возможность вставить новый контент, а затем сразу получить новый индекс. Мой существующий код (использующий стандартные классы DOM) содержит массу вставок и обновлений, и мне также нужно знать, где в документе существовал последний вставленный элемент. Потребность в outputAndReparse () каждый раз, а затем в поиске вставленного элемента (что я даже не могу гарантировать) не выглядит приемлемым решением.