提问人:Vignesh Govindhan 提问时间:11/18/2023 最后编辑:Mark RotteveelVignesh Govindhan 更新时间:11/18/2023 访问量:28
如何在Java Stream Api中进行模式匹配和字符串替换过滤器?[关闭]
How to do pattern matching and string replace filter within Java stream Api? [closed]
问:
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="********">
<Customer>
<Address>
<AddrID>123</AddrID>
<AddrLine1>57 Crampton road "</AddrLine1>
</Address>
</<Customer>
</Document>
在此 XML 中,我需要将 AddrLine1 中的 “ 替换为 '”'。这需要在所有标记值中完成。因此,我需要替换与模式匹配的文本>&<。
我正在使用流 API 读取 XML 文件。请让我知道如何在流中添加模式匹配和过滤器。
答:
0赞
TheCodingHornet
11/18/2023
#1
这能回答你的问题吗?
String inputFile = "path/to/input.xml";
String outputFile = "path/to/output.xml";
try (BufferedReader reader = new BufferedReader(new FileReader(inputFile));
BufferedWriter writer = new BufferedWriter(new FileWriter(outputFile))) {
String line;
Pattern pattern = Pattern.compile(">([^<]*)<");
while ((line = reader.readLine()) != null) {
Matcher matcher = pattern.matcher(line);
StringBuffer sb = new StringBuffer();
while (matcher.find()) {
String replacement = matcher.group(1).replace("\"", "'\"'");
matcher.appendReplacement(sb, ">" + replacement + "<");
}
matcher.appendTail(sb);
writer.write(sb.toString());
writer.newLine();
}
} catch (IOException e) {
e.printStackTrace();
}
评论
0赞
Reilas
11/18/2023
不错,+1。您应该添加 XML 规范和 ABNF。而且,您可以在此处使用 PrintWriter。
评论