Обновить значение атрибута с помощью vtd-xml

Учитывая xpath к атрибуту и ​​новое значение, я хочу обновить значение атрибута до нового значения.

Я следовал примеру здесь: http://vtd-xml.sourceforge.net/codeSample/cs7.html и придумать следующее:

autoPilot.selectXPath(xpath);
modifier.updateToken(vtdNav.getAttrVal(vtdNav.toString(autoPilot.evalXPath())), newContent);

... все мои тесты проходят успешно, но, возможно, из-за того, что я не привык к "токенизированному" способу работы vtd-xml, он "не кажется" правильным, поэтому я просто ищу подтверждения того, что я сделал правильно.


person Cheetah    schedule 30.05.2017    source источник


Ответы (1)


Ваш код будет работать нормально... предположим, вы вызовете modifier.output().

но это не оптимально...

Это утверждение

modifier.updateToken(vtdNav.getAttrVal(vtdNav.toString(autoPilot.evalXPath())), newContent);

Можно записать как

modifier.updateToken(autoPilot.evalXPath()+1, newContent);

Потому что, если имя атрибута имеет значение индекса i (!=-1), то значение атрибута всегда равно i+1... поскольку attr val следует сразу за именем атрибута. Условная проверка не требуется.

person vtd-xml-author    schedule 30.05.2017