Есть ли способ или как я могу предотвратить множественные изменения в одном смещении в VTD-XML?
Основываясь на вопросе, который я задал ранее: как сохранить постоянное обновление и, наконец, сохранить выходные данные в виде файла с XMLModifier
Предыдущий вопрос, который я сделал, это сделать все обновления и, наконец, вывести их в XML: xm.ouput("output.xml");
Я знаю, что вы упомянули, что:
Одна операция на значение смещения: две повторяющиеся операции с одним и тем же смещением вызовут исключение
Например, я, вероятно, список пути, который я хотел бы редактировать, но я забыл, что будет дубликат. Я не буду знать, пока не возникнет ошибка и не произойдет исключение.
VTDGen vg = new VTDGen();
vg.parseFile("input.xml", false);
vn.getNav();
AutoPilot ap = new AutoPilot(vn);
XMLModifier xm = new XMLModifier(vn);
public void updateToken(String path, String value)
{
ap.selectPath(path);
.........
xm.updateToken(i,value);
}
public static void main(String args[])
{
updateToken("/a/b/c", "hello");
//updateToken("/a/b", "world");(*ignore)
updateToken("/a/b/c", "john");
}
Но есть ли способ 2-го обновления возможно? Перезаписав или есть способ проверить что эта точка обновляется? Какие-либо предложения?
У меня есть XML-файл что-то вроде этого.
<a>
<b>
<c>value1</c>
</b>
<b>
<c>value2</c>
</b>
</a>
Я решил использовать первый updateToken("/a/b/c", "hello")
обновить только 2-й узел C - value2 -> hello и следующий updateToken("/a/b/c", "john")
обновить оба узла C. Вывод, который я получил, был:
<a>
<b>
<c>john</c>
</b>
<b>
<c>hello</c>
</b>
</a>
А позже выдает исключение, о котором я знаю, что две операции происходят с одним и тем же смещением. Вот мне и интересно, возможно ли вообще не делать 2й updateToken()
так как было одно обновление по этому смещению
Как сделать поиск обновлений маркировки, прежде чем начинать отмечать, если нет, то там и там будет какое-то обновление...
1 ответ
UpdateToken должен выдавать исключение ModifyException в случае, если для значения смещения используется более одной операции. Кроме того, более поздние обновления не будут зарегистрированы в XMLModifier и не будут переданы в вывод. В целом, пожалуйста, подумайте о перехвате modifyException и обработайте его в своем коде, чтобы учесть дублирование операций.