Orijinal düzenini korurken mevcut bir XML dosyasını düzenlemek istiyorum. Bu, yeni satırlar, yorumlar vb. Içerir. Düzenleme, XML içindeki öğeleri bulma ve metin değerini değiştirme işlemlerinden oluşur.Groovy XML dosyasını düzenleyin, yorumları gözden geçirin, satır sonları
İlk denemem XmlUtil.serialize ile XMLParser kullanıyordu, ancak bu gereksinimi karşılamıyor.
XMLParser'a yönelik herhangi bir alternatifin, düzenlemelerin orijinal XML dizesinin "yerinde" olduğu yerlerden herhangi biri var mı? Değilse, belki de XPath/GPath kullanarak arama yapan bir kütüphane var ve sadece bulmacanın yerini döndür, böylece StringBuilder.replace'ı yapabilirim.
DÜZENLEME: Şimdilik
Sonra ben endeksler üzerinde değiştirme yapıyorum (ı xpath kullanarak bulabilmesi) XML düğümün dize endeksleri bulmak için, bu fonksiyonu yaptı. Basit düğümleri için ince Works < düğüm> değeri </düğüm>:
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;
}
Teşekkür :) – mbdev
groovy.xml.dom.DOMUtil 1.8 ve üstü harika değil. Groovy.xml.XmlUtil.serialize (root) için kaydetme kullanılmalıdır. –
Bu, biçimlendirmeyi koruyacak ancak yorumları kaybedecektir. XML'deki yorumları korumak için şuraya bakın: https://stackoverflow.com/questions/20690526/preserve-formatting-when-updating-xml-file-with-groovy#20720694 –