gpt4 book ai didi

xml - Groovy编辑XML文件,保留注释、换行

转载 作者:数据小太阳 更新时间:2023-10-29 01:43:09 25 4
gpt4 key购买 nike

我想编辑现有的 XML 文件,同时保留其原始布局。这包括换行、注释等。编辑包括在 XML 中查找元素和修改文本值。

我的第一次尝试是将 XMLParser 与 XmlUtil.serialize 一起使用,但这不符合要求。

任何人都知道 XMLParser 的任何替代方案,其中编辑是“就地”原始 XML 字符串?如果没有,也许有一个库可以使用 XPath/GPath 执行搜索并只返回找到的位置,这样我就可以执行 StringBuilder.replace。

编辑:

现在我做了这个函数,找到 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;
}

最佳答案

你可以 update your XML with DOMCategory . DOM 将保留您的原始布局。

import groovy.xml.DOMBuilder

def input = '''
<shopping>
<category type="groceries">
<item>Chocolate</item>
<item>Coffee</item>
</category>
<category type="supplies">
<item>Paper</item>
<item quantity="4">Pens</item>
</category>
<category type="present">
<item when="Aug 10">Kathryn's Birthday</item>
<item>Chocolate</item>
</category>
</shopping>

'''

def doc = DOMBuilder.parse(new StringReader(input))
def root = doc.documentElement
use(groovy.xml.dom.DOMCategory) {
def chocolate = root.depthFirst().grep{it.text() == "Chocolate"}
chocolate*.value = "Nutella"
}

def result = groovy.xml.dom.DOMUtil.serialize(root)
println result

关于xml - Groovy编辑XML文件,保留注释、换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4744546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com