gpt4 book ai didi

java - 使用 Java 替换一组重复的 xml 标签

转载 作者:行者123 更新时间:2023-12-01 13:06:31 24 4
gpt4 key购买 nike

我需要用唯一的标签替换一堆 xml 标签,我找到了一个解决方案,但我不确定它是最好的...你会建议什么?

/** Group tags replacement.
* @param input <mytag><tag>val1</tag><tag>val2</tag></mytag>
* @param tag tag
* @param replacement <tag>val</tag>
* @return <mytag><tag2>value</tag2></mytag>
*/
public static String replaceGroupTags(String input, String tag, String replacement) {
Pattern replace = Pattern.compile("<" + tag + ">" + ".*" + "</" + tag + ">");
Matcher matcher = replace.matcher(input);

int start = Integer.MIN_VALUE;
int end = Integer.MAX_VALUE;
while (matcher.find()) {
if (start == Integer.MIN_VALUE) start = matcher.start();
if (end <= Integer.MAX_VALUE) end = matcher.end();
}
StringBuffer stringBuffer = new StringBuffer(input);
return stringBuffer.replace(start, end, replacement).toString();
}

最佳答案

尝试使用正则表达式解析 XML 是一个坏主意。这是使用 DOM 的解决方案:

public static void replaceGroupTags(File input, File output, String tag, String replacement) {
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(inputFile));

XPath xpath = XPathFactory.newInstance().newXPath();
NodeList nodes = (NodeList)xpath.evaluate("//SomeNode/" + tag, doc, XPathConstants.NODESET);

// replace all occurences
for (int i = 0; i < nodes.getLength(); i++) {
nodes.item(i).setTextContent(replacement);
}

// save result to the file
Transformer xformer = TransformerFactory.newInstance().newTransformer();
xformer.transform(new DOMSource(doc), new StreamResult(output);
}

它遍历文件,找到 SomeNode 节点内所有出现 tag 的位置,并用 replacement 替换其内容

关于java - 使用 Java 替换一组重复的 xml 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23223708/

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