기존 XML 파일을 원래의 레이아웃으로 유지하면서 편집하고 싶습니다. 여기에는 새로운 줄, 주석 등이 포함됩니다. 편집은 XML 내부의 요소를 찾고 텍스트 값을 수정하는 것으로 구성됩니다.Groovy XML 파일 편집, 주석, 줄 바꿈 유지
내 첫 번째 시도는 XmlUtil.serialize와 함께 XMLParser를 사용하고 있었지만 요구 사항을 충족하지 못했습니다.
누구나 원본 XML 문자열의 편집 위치를 XMLParser로 대체 할 수 있습니까? 그렇지 않다면 아마도 XPath/GPath를 사용하여 검색을 수행하는 라이브러리가 있으며이 라이브러리의 위치를 반환하면 StringBuilder.replace를 수행 할 수 있습니다.
편집 : 지금은
나는 그때 인덱스에 대체 뭐하는 거지 (내가 XPath를 사용하여 찾을 수 있습니다) XML 노드의 문자열 인덱스를 찾기 위해이 기능을했다. 간단한 노드에 대해 잘 작동 < 노드> 값 </노드> :
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;
}
감사합니다 :) – mbdev
groovy.xml.dom.DOMUtil 1.8 이후 그루비에 있지 않습니다. 저장을 위해 groovy.xml.XmlUtil.serialize (root)를 사용해야합니다. –
이렇게하면 서식은 유지되지만 의견은 잃게됩니다. XML에서 주석을 유지하려면 다음을 살펴보십시오. https://stackoverflow.com/questions/20690526/preserve-formatting-when-updating-xml-file-with-groovy#20720694 –