我获得到一个xml的字符串现在要从中取出相应信息请问有什么方便快捷的方法吗 最好能给出例子 
String xmlstring=
<?xml version="1.0" encoding="UTF8"?> 
<login_info code="1" tsession="232133213231"> 
 <user_info> 
  <mobile>1</mobile> 
  <login_name>abc</login_name>
  <nick_name>aaaa</nick_name>
 </user_info>
</login_info> 我要取出 "abc" 存入 loginname 和 "aaaa" 存入 nickname
即:  loginname="abc"    nickname= "aaaa"
希望给出详细步骤  谢谢!

解决方案 »

  1.   

    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            DocumentBuilder db = null;
            try {
                db = dbf.newDocumentBuilder();
            } catch (ParserConfigurationException pce) {
                pce.printStackTrace();
            }        Document doc = null;
            try {
                doc = db.parse(xmlstring);// xml地址
            } catch (Exception e) {
                e.printStackTrace();
            } 
    Element root = doc.getDocumentElement();
    NodeList nl = root.getChildNodes();
    for (int i = 0; i < nl.getLength(); i++) {
    Node aNode = nl.item(i);
    if (aNode.getNodeType() == Node.ELEMENT_NODE) {
    if (aNode.getNodeName().equals("user_info")) {
    NodeList gnl = aNode.getChildNodes();
        
        for (int j = 0; j < gnl.getLength(); j++) {
    Node gNode = gnl.item(j);
    if (gNode.getNodeType() == Node.ELEMENT_NODE) {     
    if (gNode
    .getNodeName()
    .equals("login_name")) {String userName=getElementText((Element)gNode);//保存userName
    }
    else if (gNode
    .getNodeName()
    .equals("nick_name")) {String nickName=getElementText((Element)gNode);//保存userName
    }}
    }
    }
    }
    /// }和个数你自己调整一下,另一个你照着写一下吧
    private String getElementText(Element e) {
    NodeList nl = e.getChildNodes();
    for (int i = 0; i < nl.getLength(); i++) {
    Node n = nl.item(i);
    if (n instanceof org.w3c.dom.Text) {
    return n.getNodeValue();
    }
    }
    return "";
    }
      

  2.   

    <?xml version="1.0" encoding="UTF8"?> 错误 改为
     <?xml version="1.0" encoding="UTF-8"?>
          DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
          DocumentBuilder builder = factory.newDocumentBuilder();
         Document doc = builder.parse(xmlstring);      Element root = doc.getDocumentElement();
          Element item = (Element)root.getElementsByTagName("user_info").item(0);
          Element e= (Element)item.getElementsByTagName("login_name").item(0);Text t = (Text)e.getFirstChild();
            String codeindex = t.getNodeValue();      Element e1= (Element)item.getElementsByTagName("nick_name").item(0);Text t1 = (Text)e1.getFirstChild();
            String codeindex1 = t1.getNodeValue();
      

  3.   

    Document doc = null;  document和Element是哪个包中的
    另外,提示出错
    java.net.MalformedURLException: no protocol: <?xml version="1.0" encoding="UTF-8"?>
    <login_info code="0" tsession="6C682C8CC0CA8B6EAD01BFA5DB761818">
    <user_info>
      <mobile>12345678900</mobile>
      <login_name>liul</login_name>
      <nick_name>liul</nick_name>
    </user_info>
    </login_info>
    at java.net.URL.<init>(URL.java:537)
    at java.net.URL.<init>(URL.java:434)
    at java.net.URL.<init>(URL.java:383)
    at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
    at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
    at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
    at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:124)
    at com.gtom.wapcms.content.web.subchannel.subLoginAction.execute(subLoginAction.java:87)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    at com.gtom.wapcms.content.ousys.web.KeepSessionFilter.doFilterInternal(KeepSessionFilter.java:41)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    at org.springframework.orm.hibernate.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:172)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    at org.springframework.orm.hibernate.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:172)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    at com.gtom.utils.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:163)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2422)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:163)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:199)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:700)
    at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:584)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
    at java.lang.Thread.run(Thread.java:534)
      

  4.   

    import org.w3c.dom.Attr;
    import org.w3c.dom.DOMException;
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
    import org.w3c.dom.Text;
    import org.xml.sax.SAXException;另外,你的文件一定是用UltraEditor编辑的,这是它的bug,编码有问题
    你现在用写字版打开文件,再保存就可以了
      

  5.   

    不是用ultraeditor 我用jb2005  还是报
    java.net.MalformedURLException: no protocol: <?xml version="1.0" encoding="UTF-8"?><login_info code="0" tsession="2E7E90B28FB0058B3AE90C19C7826F39">
    <user_info>
      <mobile>12345678900</mobile>
      <login_name>liul</login_name>
      <nick_name>liul</nick_name>
    </user_info>
    </login_info>
    at java.net.URL.<init>(URL.java:537)
    at java.net.URL.<init>(URL.java:434)
    at java.net.URL.<init>(URL.java:383)
    at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
    at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
    at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
    at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:124)
      

  6.   


    尚观—至强的Linux培训专家!