gpt4 book ai didi

java - 如何在Java中有效地删除XML字符串中的直接标签

转载 作者:行者123 更新时间:2023-12-01 12:56:17 25 4
gpt4 key购买 nike

我有一个 XML 被解析为字符串..基本结构如下

 <envelope>
<body>
<entity1>
<tag1>
.
.
</tag 1>
<tag2>
.
.
</tag2>
</entity1>
<entity 2>
<tag1>
.
.
</tag1>
<tag2>
.
.
</tag2>
</entity2>

我需要删除标签,比如 tag2,即整个 .. block 。我正在使用 while 循环来执行此操作,例如

 while(str.indexOf("<tag2>")>=0)
{
strRepl=str.substring(str.indexOf("<tag2>"),str.indexOf("</tag2>")+7);
str=xmlString.replaceFirst(strRepl,"");
}

这是有效的,但我想了解是否有更好的方法来使用字符串来实现它?请提出建议。

最佳答案

您可以使用正则表达式来实现这一点。 Java 提供了 Pattern 和 Matcher 类,可以为您完成这项工作。

    String yourString = "<envelope><body><entity1></entity1></body></envelope>";
String REGULAR_EXPRESSION= "(\\<body>.+?\\</body>)";
Pattern pattern = Pattern.compile(REGULAR_EXPRESSION, Pattern.DOTALL | Pattern.MULTILINE);
Matcher matcher = pattern.matcher(hello);
if (matcher.find()) {
System.out.println(yourString.replaceAll(matcher.group(1), ""));
}

这里(\\<body>.+?\\</body>)代表 <body> 内包含的所有内容标签包含标签。专线matcher.group(1)表示匹配字符串的位置。

如果你想替换所有出现的地方,只需使用

    yourString = matcher.replaceAll("");

要替换第一次出现的情况,请仅使用:

    yourString = matcher.replaceFirst("");

我不确定它是否适用于字符串中的新行“\n”内容,如果字符串是单行,您可以使用:

System.out.println(yourString.replaceAll(REGULAR_EXPRESSION, ""));

关于java - 如何在Java中有效地删除XML字符串中的直接标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23864935/

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