正则表达式在Java中拆分XML

时间:2014-03-06 10:09:14

标签: java regex

我想将一些XML文本分成几部分:

xmlcontent = "<tagA>text1<tagB>text2</tagB></tagA>";

在C#中我使用

string[] splitedTexts = Regex.Split(xmlcontent, "(<.*?>)|(.+?(?=<|$))");

结果是

splitedTexts = ["<tagA>", "text1", "<tagB>", "text2", "</tagB>", "</tagA>"]

如何用Java做到这一点?

我试过了

String[] splitedTexts = xmlcontent.split("(<.*?>)");

但结果并不像我期待的那样。

2 个答案:

答案 0 :(得分:5)

split的参数定义要分割的分隔符。您希望在<之前和>之后拆分,因此您可以执行以下操作:

String[] splitedTexts = xmlcontent.split("(?=<)|(?<=>)");

答案 1 :(得分:3)

如果您想使用Regex:

public static void main(String[] args) {
    String xmlContent = "<xml><tagA>text1</tagA><tagB>text2</tagB></xml>";
    Pattern pattern = Pattern.compile("(<.*?>)|(.+?(?=<|$))");
    Matcher matcher = pattern.matcher(xmlContent);
    while (matcher.find()) {
        System.out.println(matcher.group());
    }
}