从String中删除xml版本tage

时间:2015-08-23 15:47:40

标签: java regex

如何从Java中的XML String中删除<xml version>标记。

我尝试了以下操作,但这没有用。

XmlString = XmlString.replaceAll("<?xml*?>", "").trim(); 

我也试过

XmlString = XmlString.replaceAll("\\<\\?xml(.+?)\\?\\>", "").trim();

2 个答案:

答案 0 :(得分:1)

正则表达式很复杂。没有必要为您尝试做的事情引入这种复杂性。试试这个:

xmlString = xmlString.substring(xmlString.indexOf("?>") + 2);

答案 1 :(得分:1)

对于正则表达式 <?xml*?>

  1. 您必须逃避,因为它是元字符。
  2. 因此,应该在第一步将正则表达式修改为 <\\?xml*\\?>

    1. 元字符表示任何字符(如外卡)不是 * (星号),而是正则表达式中的(一个点)。
    2. * 作为相邻字符的量词表示零或更多。
    3. 因此,您应该在 xml 之后使用。* <\\?xml.*\\?>

      1. * 尽可能长一段时间。为了尽可能缩短,您最好使用 *?而不是 *
      2. 所以最终的正则表达式来自 <\\?xml.*?\\?>

        下面是一个工作示例代码:

        String xmlString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
        System.out.println(xmlString);
        xmlString = xmlString.replaceAll("<\\?xml.*?\\?>", "");
        System.out.println(xmlString);