JavaのXMLとマップ、リスト形式変換 - 抜粋

輸入java.io.ByteArrayOutputStreamを;  
輸入はjava.util.ArrayList;  
輸入java.util.HashMapを;  
インポートするjava.util.Iterator;  
輸入はjava.util.List;  
輸入java.util.Map;  
輸入java.util.TreeMapの;
輸入net.sf.json.JSON;  
輸入net.sf.json.JSONSerializer;  
輸入net.sf.json.xml.XMLSerializer;  
輸入org.dom4j.Document;  
輸入org.dom4j.DocumentException。
輸入org.dom4j.DocumentHelper;  
輸入org.dom4j.Element;  
輸入org.dom4j.io.OutputFormat。  
輸入org.dom4j.io.XMLWriter;  
  
/ **  
 *一般的なXML CONVERユーティリティ
 *   
 * @author [email protected] 
 * @version フレームワーク2010年10月26日
 * @url http://blog.csdn.net/arjick/article/details/6251777  
 * /   
パブリック クラスXmlConverUtil {  
     / **  
     *マップにXML XML <ノード> <キーラベル= "キー1">をvalue1 </キー> <キー
     *ラベル= "キー2">値2 </キー> ...... </ノード> 
     *   
     * @paramのマップ
     * @return  
     * /   
    パブリック 静的の文字列maptoXml(地図マップ){  
        ドキュメントドキュメント =DocumentHelper.createDocument();  
        素子nodeElement = document.addElement( "ノード" )。  
        (オブジェクトobj:map.keySet()){   
            要素keyElement = nodeElement.addElement( "キー" )。  
            keyElement.addAttribute( "ラベル" 、String.valueOf(OBJ));  
            keyElement.setText(String.valueOf(map.get(OBJ)))。  
        }   
        戻りdoc2String(文書)。  
    }   
  
    / **  
     *リストにXML XML <ノード> <ノード> <キーラベル= "キー1">値1 </ KEY> <キー 
     ・ラベル= "KEY2">値2 </ KEY> ...... <
     ・ラベル= "KEY1">値1 </ KEY> <キー
     ・ラベル= "KEY2"
     * @paramのリスト
     * @return  
     * /   
    パブリック 静的文字列listtoXml(一覧リスト)がスロー例外{   
        ドキュメントドキュメント = DocumentHelper.createDocumentを();  
        素子nodesElement = document.addElement( "ノード" )。  
        int型私= 0 ;  
        (オブジェクトo:リスト){   
            要素nodeElement = nodesElement.addElement( "ノード" )。  
            もし(O instanceofのマップ){  
                 (オブジェクトobj:((マップ)O).keySet()){  
                    要素keyElement ;   = nodeElement.addElement( "キー" );  
                    keyElement.addAttribute( "ラベル" 、String.valueOf(OBJ));  
                    keyElement.setText(String.valueOf(((マップ)O)に.get(OBJ)))。  
                }   
            } {   
                エレメントkeyElement = nodeElement.addElement( "キー" )。  
                keyElement.addAttribute( "ラベル" 、String.valueOf(I));  
                keyElement.setText(String.valueOf(O))。  
            }   
            私は ++ 
        }   
        戻りdoc2String(文書)。   
    }   
  
    / **  
     * XMLをJSON { "ノード":{ "キー":{ "ラベル@": "キー1"、 "#テキスト": "VALUE1"}}} CONVER 
     * <O> <ノードクラス= "オブジェクト"> <キークラス= "オブジェクト" 
     *ラベル= "キー1">値1 </ KEY> </ノード> </ O> 
     *   
     * @param JSON 
     * @return  
     * /   
    パブリック 静的文字列jsontoXml(文字列JSON){  
         試す{   
            XmlSerializerをシリアライザ = 新しいXmlSerializerを();  
            JSON jsonObject = JSONSerializer.toJSON(JSON)。  
            
        } キャッチ
            e.printStackTrace();  
        }   
        戻り ヌル
    }   
  
    / **  
     * XMLマップするために、XMLの<node> <キーラベル= "キー1">値1 </ KEY> <キー
     ・ラベル= "KEY2">値2 </ KEY> ...... </ノード> 
     *   
     * @paramのXML 
     * @return  
     * /   
    パブリック 静的地図xmltoMap(文字列XML){  
         試み{   
            地図マップ = 新しいHashMapの();  
            文書の文書 = DocumentHelper.parseText(XML)。  document.getRootElement();  
            リストノード = nodeElement.elements()。  
            ため(イテレータは= ; it.hasNext(); node.iteratorを()){   
                要素ニレ = (要素)it.next();  
                System.out.println(elm.toString())。
                map.put(elm.getName()、elm.getText())。  
                ニレ = nullを
            }   
            ノード = NULL ;  
            nodeElement = nullを
            文書 = nullをリターンマップ。  
        }キャッチ(例外e){   
            e.printStackTrace();  
        }   
        戻り ヌル
    } 
    
    / ** 
     * XMLマップするために、XMLの<node> <キーラベル= "キー1">値1 </ KEY> <キー
     ・ラベル= "KEY2">値2 </ KEY> ...... </ノード> 
     * @paramのXML 
     * @param sortBoolean是否排序
     * @作者廖正瀚
     * @return 
     * @throws 例外 
      * / 
    パブリック 静的地図<文字列、文字列> xmlToMap(文字列、XML、ブール sortBoolean)がスロー <文字列を、
        マップマップを、
        もし(sortBoolean){ 
            地図 = 新規のTreeMap <文字列、文字列> (); 
        } { 
            地図 = 新規 HashMapの<文字列、文字列> (); 
        } 
        文書ドキュメント = DocumentHelper.parseText(XML)。  
        素子nodeElement = document.getRootElement()。  
        @SuppressWarnings( "rawtypes" 
        イテレータそれ = (nodeElement.elements)をイテレータ()。
        一方、(it.hasNext()){   
            要素ニレ =(要素)it.next();  
            System.out.println(elm.toString())。
            map.put(elm.getName()、elm.getText())。  
            ニレ = nullを
        }   
        リターンマップ。
    } 
  
    / **  
     *リストにXML XML <ノード> <ノード> <キーラベル= "キー1">値1 </ KEY> <キー
     ・ラベル= "KEY2">値2 </ KEY> ...... </ノード> <ノード> <キー
     ・ラベル= "KEY1">値1 </ KEY> <キー
     ・ラベル= "KEY2">値2 </ KEY> ...... </ノード> </ノード> 
       
     一覧xmltoList(文字列XML){  
         {   
            一覧 <地図>リスト= 新しいのArrayList <マップ> ();  
            文書の文書 = DocumentHelper.parseText(XML)。  
            素子nodesElement = document.getRootElement()。  
            リストノード = nodesElement.elements()。  
            (イテレータその= nodes.iterator(); its.hasNext()){   
                要素nodeElement = (要素)its.next();  
                地図マップ = xmltoMap(nodeElement.asXML());  
                list.add(マップ)  
                マップ = nullを
            }   
            ノード = NULL ;  
            nodesElement = nullを
            文書 = nullを戻り値のリスト。  
        } キャッチ(例外e){   
            e.printStackTrace();  
        }   
        戻り ヌル
    }   
  
    / **  
     * XMLにJSON <ノード> <キーラベル= "キー1">をvalue1 </ key>の</ノード>转化为
     * { "キー":{ "ラベル@": "キー1"、 "#テキスト" : "VALUE1"XML 
     * @return  
     * /   
    パブリック 文字xmltoJson(文字列XML){   
        XmlSerializerをXmlSerializerをは = 新しいXmlSerializerを()。  
        リターンxmlSerializer.read(XML).toString();  
    }   / ** 
     *   
     * @paramの文書
     * @return * / パブリック静的文字列doc2String(文書ドキュメント){   
        文字列S = "" ;  
        試す{  
             // 使用输出流来进行转化   
            ByteArrayOutputStreamをアウト= 新しいです
  
      
       
     ByteArrayOutputStream();  
            // 使用UTF-8编码  
            OUTPUTFORMAT形式= 新しい OUTPUTFORMAT(」」、、 "UTF-8" )。  
            XmlWriterライター = 新しいするXMLWriter(うち、フォーマット)。  
            writer.write(文書)。  
            S = out.toString( "UTF-8" )。  
        } キャッチ(例外例){   
            ex.printStackTrace();  
        }   
        戻りS。  
    }   
}

おすすめ

転載: www.cnblogs.com/gaoweifeng/p/12082897.html