下面是一段xml:
     <bodyContent xsi:type="java:com.webex.service.binding.user.CreateUser">
     <firstName>A</firstName>
    <lastName>B</lastName>
    <webExId></webExId>
    <email></email>
    <password>888888</password>
    <options>
    </options>
    <timeZone>0</timeZone>
    <language>ENGLISH</language>
    <active>ACTIVATED</active>
</bodyContent>  
   现在我只想获取language标签的内容English,请问大虾正则表达式该怎么写?以前没接触过正则表达式
   希望各位大虾帮忙!thank you!

解决方案 »

  1.   

    碰到这种问题最好用xml解析类库吧
      

  2.   

    我觉得可以用正则表达式来取得吧,上面bodycontent的内容就是用正则表达式从xml中截取的,但是我再截取language标签就不行了
      

  3.   

    elementString=<header>
      <securityContext>
        <siteName>jeffy</siteName>  
        <webExID>wbxadmin</webExID>  
        <password>pass</password>
      </securityContext>
    </header>
    <body>
    <bodyContent xsi:type="java:com.webex.service.binding.user.CreateUser">
         <firstName>A</firstName>
        <lastName>B</lastName>
        <webExId></webExId>
        <email></email>
        <password>888888</password>
        <options>
        </options>
        <timeZone>0</timeZone>
        <language>ENGLISH</language>
        <active>ACTIVATED</active>
    </bodyContent>    
    </body>
    这是原始的xml,我用
            Pattern p = Pattern.compile("<(\\w+:)?bodyContent[^>]+>");
            Matcher m = p.matcher(elementString);
            String tmp = m.find() ? m.group() : "";
       解析到的tmp就是我一开始发的xml内容
      

  4.   

    其实总体的意思就是:
    首先我要获取bodycontent标签,
    如果bodycontent标签中含有language标签我就要截取language标签中的内容,其他的我都不要
      

  5.   

    el可以嵌套,標簽也能嵌套?
    一次性在里面寫光不行么?一定要先取道bodycontent再取道language?
    直接區bodycontent里的language可以嗎?
    聽不懂幫頂
    順便學習下取兩次的方法
      

  6.   

            String s = "<bodyContent xsi:type=\"java:com.webex.service.binding.user.CreateUser\">"+
            "      <firstName>A </firstName>                                        "+
            "     <lastName>B </lastName>                                           "+
            "     <webExId> </webExId>                                              "+
            "     <email> </email>                                                  "+
            "     <password>888888 </password>                                      "+
            "     <options>                                                         "+
            "     </options>                                                        "+
            "     <timeZone>0 </timeZone>                                           "+
            "     <language>ENGLISH </language>                                     "+
            "     <active>ACTIVATED </active>                                       "+
            "</bodyContent>                                                         ";
            int x = 0;
            String[] aS;
            while(true) {
                aS = s.split("<[/]?language>", 3);
                x = aS.length;
                if (x < 3 || (aS[2]).equals("")) {
                    break;
                }
                s = aS[2];
                System.out.println(aS[1]);        };不过还是建议使用xml解析类库,呵呵
      

  7.   

    已经解决了,感谢楼上的帮忙!yami251139 :谢谢你的提议,我跟你解释一下:我们有个log专门用来做xml请求记录的,现在我们要去两个信息,
    一个就是bodyContent里的actionName如com.webex.service.binding.user.CreateUser里的CreateUser,另外一个就是取language,用来查询我们的客户所用的language属性。
    Cspider588 :非常感谢您的回复已经您的解决方案,不过这个不太适合大量的文件。My resolution;
                    String con = "(<language>)([^>]*)<";
    Pattern pat = Pattern.compile(con);
    Matcher m = pat.matcher(elementString);
    while (m.find()){
    String language = m.group(2);
    System.out.println(language);
    }
      

  8.   

    <JAVA>
    //MAIN TEST
    String s="<language>ENGLISH</language>";
    Pattern p = Pattern.compile("\\<(\\Qlanguage\\E)\\>(\\w+?)\\<\\/\\1\\>");
    Matcher m = p.matcher(s);
    while(m.find()){
     System.out.println(m.group(2));
    }
    </JAVA>
      

  9.   

    \\<(language\\b)\\>(\\w+?)\\<\\/\\1\\> 这样也行
      

  10.   

    <language>(.+)</language>
    最简单的