Я хотел бы отредактировать существующий файл XML, сохранив его исходный макет. Сюда входят новые строки, комментарии и т. Д. Редактирование состоит из поиска элементов внутри XML и изменения текстового значения.
Моя первая попытка заключалась в использовании XMLParser с XmlUtil.serialize, но это не удовлетворяет требованиям.
Кто-нибудь знает о какой-либо альтернативе XMLParser, где правки «на месте» исходной XML-строки? Если нет, возможно, существует библиотека, которая выполняет поиск с использованием XPath / GPath и просто возвращает местоположение находки, чтобы я мог выполнить StringBuilder.replace.
EDIT :
На данный момент я сделал эту функцию, чтобы найти строковые индексы узла XML (который я могу найти с помощью xpath), затем я выполняю замену индексов. Отлично работает для простых узлов
def find_location_by_node(xmlString, root_xml, node)
{
current_index = 0;
for(current_node in root_xml.depthFirst())
{
node_name = current_node.name().getLocalPart()
current_index = xmlString.indexOf('<' + node_name, current_index);
if(current_node == node)
{
end_tag = '</' + node_name + '>';
end_tag_index = xmlString.indexOf(end_tag, current_index) + end_tag.length();
return [current_index, end_tag_index];
}
}
return -1;
}