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>", ...
中的 *
。这将匹配 <
字符
之前的所有内容
我有以下 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>", ...
中的 *
。这将匹配 <
字符