Java 字符串替换 XML 模式

Java String Replace on an XML pattern

我有以下 XML 字符串:

String XML = "<TEST><MESSAGEID>5435646578</MESSAGEID></TEST>";

xml 字符串中的数字不断变化,所以我想进行字符串替换,并希望将 XML 变为

<TEST><MESSAGEID></MESSAGEID></TEST>

我正在寻找类似的方法,但我不确定如何获取 replaceAll 方法中第一个参数的模式。

public class HelloWorld {

    public static void main(String[] args) {
        String XML = "<MESSAGEID>5435646578</MESSAGEID>";
        String newStr = XML.replaceAll("<MESSAGEID>*</MESSAGEID>", "<MESSAGEID></MESSAGEID>");
        System.out.println(newStr);
    }
}

模式<MESSAGEID>[0-9]+</MESSAGEID> 会起作用。如果您的输入结构可以改变,您可能需要使用 XML 解析器。

我会使用字母数字模式,除非您完全确定它只是数字模式:

// alphanumeric
String newStr = uotmXML.replaceAll("<MESSAGEID>\w+</MESSAGEID>", "<MESSAGEID></MESSAGEID>");

// digits
String newStr = uotmXML.replaceAll("<MESSAGEID>\d+</MESSAGEID>", "<MESSAGEID></MESSAGEID>");

我会使用正则表达式 ^<MESSAGEID>(\d+)</MESSAGEID>$ 来查找数字(在第 1 组中),如果您保证格式不会改变的话。否则我会使用合适的 XML 库,例如 JAXB 或 Jackson。

尝试用 [^<]+ 替换 uotmXML.replaceAll("<MESSAGEID>*</MESSAGEID>", ... 中的 *。这将匹配 < 字符

之前的所有内容