接口调用后返回一个String,System.out.println后显示以下内容:<?xml version='1.0' encoding='UTF-8'?> 
    <mailList> 
        <mail num="1"> 
            <sender>[email protected] </sender> 
            <subject>test</subject> 
            <date>2009-12-16 13:14 </date> 
            <mailhref>http://211.111.111.111/cgi-bin/get_message2.cgi?sk=pnIc0BZw&fd=inbox&lang=gbtf=shoujj/index2.htmid=1260940456.12033.3.zgd_linux.localdomain&sort=0</mailhref> 
        </mail> 如何在这么长的字符串中得到<subject>里面的内容test?,最好给出源码,谢谢!

解决方案 »

  1.   

    假设返回的String有变量 str保存public String getValue(String str){
    String key1="<subject>";
    String key2="</subject>";int start=str.indexOf(key1);//找到key1所在位置if(start!=-1){
    int end=str.indexOf(key2);//找到key2所在位置
    if(end!=-1){
    return str.subString(key1+key1.length(),key2);
    }
    }
    return null;
    }
    直接敲的代码,没测过。
      

  2.   

    如果是返回xml类型的string
    可以通过xml解析组建来对各节点进行需要的操作
    包括查找到指定节点和节点的内容
      

  3.   


    public static void main(String args[]){
    String str = "</sender><subject>test</subject><<subject>testtest</subject>date>";
    Pattern p = Pattern.compile("<subject>(.+?)</subject>"); 
    Matcher m = p.matcher(str); 
    while(m.find()){
    System.out.println(m.group(1));
    }
    }
      

  4.   

    jdom解析吧。要是下次你想要mailhref里面得内容,又搞个正则来匹配啊?
      

  5.   

    建一颗DOM树,按照child一层一层往下数
      

  6.   

    1楼是用substring直接截取字符串,不过代码敲错
    3楼是用正则表达式对指定的字符序列进行匹配
    2种方法都可以用 就当学习了public static String getValue(String str){
    String key1="<subject>";
    String key2="</subject>";

    int start=str.indexOf(key1);//找到key1所在位置 if(start!=-1){
    int end=str.indexOf(key2);//找到key2所在位置
    if(end!=-1){
    return str.substring(start+key1.length(),end);//这句敲错
    }
    }
    return null;
    }
      

  7.   

    jdom 也可以java xpath不错jdk1.5里面
    import java.io.IOException;import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.ParserConfigurationException;
    import javax.xml.xpath.XPath;
    import javax.xml.xpath.XPathConstants;
    import javax.xml.xpath.XPathExpression;
    import javax.xml.xpath.XPathExpressionException;
    import javax.xml.xpath.XPathFactory;import org.w3c.dom.Document;
    import org.w3c.dom.NodeList;
    import org.xml.sax.SAXException;
    public class XPathExample { public static void main(String[] args) 
       throws ParserConfigurationException, SAXException, 
              IOException, XPathExpressionException {     DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
        domFactory.setNamespaceAware(true); // never forget this!
        DocumentBuilder builder = domFactory.newDocumentBuilder();
        Document doc = builder.parse("data.xml");     XPathFactory factory = XPathFactory.newInstance();
        XPath xpath = factory.newXPath();
        XPathExpression expr 
         = xpath.compile("//mail/subject/text()");     Object result = expr.evaluate(doc, XPathConstants.NODESET);
        NodeList nodes = (NodeList) result;
        for (int i = 0; i < nodes.getLength(); i++) {
            System.out.println(nodes.item(i).getNodeValue()); 
        }   }}