Есть ли способ или как я могу предотвратить множественные изменения в одном смещении в 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 и обработайте его в своем коде, чтобы учесть дублирование операций.

Другие вопросы по тегам