オリジナルのレイアウトを維持しながら、既存のXMLファイルを編集したいと考えています。これには、改行、コメントなどが含まれます。編集は、XML内の要素を検索し、テキスト値を変更することで構成されます。Groovy XMLファイルを編集してコメントや改行を残す
私の最初の試みはXmlUtil.serializeでXMLParserを使用していましたが、それは要件を満たしていません。
誰でも、XMLParserの代わりに、元のXML文字列の編集が適切な場所を知っていますか?もしそうでなければ、おそらくXPath/GPathを使って検索を実行し、findの場所を返すライブラリがあるので、StringBuilder.replaceを実行できます。
EDIT:今のところ
私はその後、私は、インデックスに置き換えるをしています(私は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はgroovy 1.8以降ではありません。保存するには、groovy.xml.XmlUtil.serialize(root)を使用する必要があります。 –
これにより書式は維持されますが、コメントは失われます。 XMLでコメントを保存するには、ここをクリックしてください:https://stackoverflow.com/questions/20690526/preserve-formatting-when-updating-xml-file-with-groovy#20720694 –