这样一串string, 我想取得<DEFAULT>...</DEFAULT>里面的
warehouse code, cust_code, vendor code 的values ,return  3个String.<CRIT><CONDITIONS> <!-- condiftions for ULHKG -->
<CONDITION op='LIKE'>
<FIELD l_name='warehouse_code' datatype='varchar' length='10'>%</FIELD></CONDITION>
<LOGICAL_OP>AND</LOGICAL_OP>
<CONDITIONS>
<CONDITION op='LIKE'>
<FIELD l_name='cust_code' datatype='varchar' length='10'>%</FIELD>
</CONDITION>
</CONDITIONS>
</CONDITIONS>
<DEFAULT>
<FIELD l_name='warehouse_code'>ULSIN</FIELD>
<FIELD l_name='cust_code'>SIN000153</FIELD>
<FIELD l_name='vendor_code'>000123</FIELD>
</DEFAULT>
</CRIT>

解决方案 »

  1.   

    String str = " <CRIT> <CONDITIONS>  <!-- condiftions for ULHKG -->"
    + "<CONDITION op='LIKE'> "
    + "<FIELD l_name='warehouse_code' datatype='varchar' length='10'>% </FIELD> </CONDITION> "
    + "<LOGICAL_OP>AND </LOGICAL_OP> "
    + "<CONDITIONS> "
    + "<CONDITION op='LIKE'> "
    + "<FIELD l_name='cust_code' datatype='varchar' length='10'>% </FIELD> "
    + "</CONDITION> " + "</CONDITIONS> " + "</CONDITIONS> "
    + "<DEFAULT> "
    + "<FIELD l_name='warehouse_code'>ULSIN </FIELD> "
    + "<FIELD l_name='cust_code'>SIN000153 </FIELD> "
    + "<FIELD l_name='vendor_code'>000123 </FIELD> "
    + "</DEFAULT> " + "</CRIT> "; String pattern = "<DEFAULT>.+?</DEFAULT>";
    Pattern patt = Pattern.compile(pattern, Pattern.MULTILINE); Matcher matcher = patt.matcher(str);
    Matcher temp_Matcher = null;

    Map map = new HashMap(); while (matcher.find()) { pattern = "(l_name=\\'([^\\']+)\\'>([^<>]+)</FIELD>)"; patt = Pattern.compile(pattern, Pattern.MULTILINE);
    temp_Matcher = patt.matcher(matcher.group(0)); while (temp_Matcher.find()) {
    map.put(temp_Matcher.group(2), temp_Matcher.group(3).trim());
    }
    }

    System.out.println(map);帮你写了个大概的  自己再根据需求微调下 应该 就差不多了