簡體   English   中英

XML 模式上的 Java 字符串替換

[英]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 組中)。 否則我會使用像 JAXB 或 Jackson 這樣合適的 XML 庫。

嘗試在uotmXML.replaceAll("<MESSAGEID>*</MESSAGEID>", ...[^<]+替換你的* 。這將匹配所有內容,直到<字符

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM