java,用特定符号解析xml

时间:2014-04-14 17:36:13

标签: java xml regex

我正在尝试从字符串中获取xml。 特定符号位于标签标题中。 我做到了:

    public class Demo {

    public static void main(String[] args) throws Exception {
        String data = "<title> \"sad\" <<dd> ><\n   </title>";
        String pattern = "(<title>)(.+?)([<>'\"&])(.+?)(\n   </title>)";
            Matcher m = Pattern.compile(pattern).matcher(data);          
            while (m.find()) {
                String bugString = m.group(3) + m.group(4);
                String fixed = bugString.replaceAll("<", "&lt;");
                fixed = fixed.replaceAll(">", "&gt;");
                fixed = fixed.replaceAll(">", "&gt;");
                fixed = fixed.replaceAll("'", "&apos;");
                fixed = fixed.replaceAll("\"", "&quot;");
                fixed = fixed.replaceAll("&", "&amp;");
                data = data.replace(bugString, fixed);
            }
            System.out.println(data);
    }

}

但它看起来有点难看。如果我不想使用额外的库,我该如何改进呢?

1 个答案:

答案 0 :(得分:1)

如果你可以影响String,你可以将titles标签文本放在CDATA部分中。在此范围内,您不必编码特殊的XML字符。

解释CDATA部分,例如这里http://en.m.wikipedia.org/wiki/CDATA

所以你的头衔可能就像

 <title> <![CDATA[ here comes my special title with "/<>  ]]> </title>