java解析xml字符串

package com.framework.webservice;

 

 

import java.util.HashMap;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

 

import org.dom4j.Document;

import org.dom4j.DocumentException;

import org.dom4j.DocumentHelper;

扫描二维码关注公众号,回复: 616699 查看本文章

import org.dom4j.Element;

 

 

public class XmlUtil {

   public static String xmlString2MapObject(String strXML){

          StringBuilder sb = new StringBuilder();   

                   try {

                          Document doc = DocumentHelper.parseText(strXML);

                                   Element rootElt = doc.getRootElement();

                                   List<Element> liste2 = rootElt.elements();

                                   for(int i=0 ;i<liste2.size();i++){

                                          sb.append(getSubEle(liste2.get(i)));

                                   }

                            } catch (DocumentException e) {

                                   e.printStackTrace();

                            }

                   return sb.toString();

       }

       /**

        * 看看还有更深层节点不  */

       public static boolean isHasSubEle(Element e){

              return !e.isTextOnly();

       }

       /**

        * 节点遍历

        * @param e

        */

       public static String getSubEle(Element e){

              StringBuilder sb = new StringBuilder();

              boolean sub = isHasSubEle(e);

              if(sub){

                     List<Element> subs = e.elements();

                     for(int j=0 ;j<subs.size();j++){

                            sb.append(getSubEle(subs.get(j)));

                     }

              }else {

                     sb.append(e.getText());

                     //System.out.println("key="+e.getName()+"   value="+e.getText());

              }

              return sb.toString();

       }

          

          

           public static void main(String[] args) {

               String xmlString = "<env:Envelope xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:env=\"http://schemas.xmlsoap.org/soap/envelope/\">"

                             +"<env:Body>"

                             +"<n1:AllContract1Response env:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:n1=\"urn:ActionWebService\">"

                             +"<return xsi:type=\"xsd:string\">"

                             +"[{\"contract_sale\":{\"price\":500.0,\"total\":17000.0,\"good_name\":\"\u8d2b\u7164\uff08\u8d2b\u7626\u7164\uff09\",\"contract_sale_no\":\"ZB20100003\",\"good_type\":\"\u672b\u7164\"}},{\"contract_sale\":{\"price\":230.0,\"total\":200000.0,\"good_name\":\"3#\u65e0\u70df\u7164\",\"contract_sale_no\":\"YQGL2013010\",\"good_type\":\"\u7164\u6ce5\"}}]</return>"

                             +"</n1:AllContract1Response>"

                             +"</env:Body>"

                             +"</env:Envelope>";

              String str =  xmlString2MapObject(xmlString);

              System.out.println(str);

           }

 

}

 

//**********************************************************************

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.xml.sax.InputSource;

 public List xmlElements(String xmlDoc) {

         //创建一个新的字符串
         StringReader read = new StringReader(xmlDoc);
         //创建新的输入源SAX 解析器将使用 InputSource 对象来确定如何读取 XML 输入
         InputSource source = new InputSource(read);
         //创建一个新的SAXBuilder
         SAXBuilder sb = new SAXBuilder();
         
         try {
             //通过输入源构造一个Document
             Document doc = sb.build(source);
             //取的根元素
             Element root = doc.getRootElement();
             System.out.println(root.getName()); //输出根元素的名称(测试)
             System.out.println(root.getChildText( "number" ));
         } catch (JDOMException e) {
             // TODO 自动生成 catch 块
             e.printStackTrace();
         } catch (IOException e) {
             // TODO 自动生成 catch 块
             e.printStackTrace();
         }
         return null ;
     }

 

猜你喜欢

转载自ouyangyuqing.iteye.com/blog/1994030