xmlUtil 解析 创建
生活随笔
收集整理的這篇文章主要介紹了
xmlUtil 解析 创建
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
為什么80%的碼農都做不了架構師?>>> ??
http: // yangzi09150915.blog.163.com/blog/static/32953487201072911410398/package?com.aibi.cmdc.webService;
import?java.io.StringReader;
import?java.io.StringWriter;
import?java.util.ArrayList;
import?java.util.HashMap;
import?java.util.List;
import?java.util.Map;
import?javax.xml.transform.OutputKeys;
import?javax.xml.transform.Result;
import?javax.xml.transform.Transformer;
import?javax.xml.transform.sax.SAXTransformerFactory;
import?javax.xml.transform.sax.TransformerHandler;
import?javax.xml.transform.stream.StreamResult;
import?org.jdom.Document;
import?org.jdom.Element;
import?org.jdom.input.SAXBuilder;
import?org.xml.sax.InputSource;
import?org.xml.sax.helpers.AttributesImpl;
public? class?XmlUtil?{
? /**
??*?取得所有prompts?下prompt及其屬性?將其轉成list<Map<key,value>>
??*? @param ?xmlDoc
??*? @return
?? */
?@SuppressWarnings("unchecked")
? public? static?List<Map<String,?String>>?getPrompts(String?xmlDoc)?{
?List<Map<String,?String>>?list?=? new?ArrayList<Map<String,String>>();
? // ?創建一個新的字符串
?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();
? // ?得到根元素所有子元素的集合
?List<Element>?oneLevelNodes?=?root.getChildren();
? for?( int?i?=?0;?i?<?oneLevelNodes.size();?i++)?{
?Element?oneLevelNode?=?oneLevelNodes.get(i);
? if(oneLevelNode.getName().equals("prompts")){
?List<Element>?prompts?=?oneLevelNode.getChildren();
? for?( int?j?=?0;?j?<?prompts.size();?j++)?{
?Map<String,?String>?promptMap?=? new?HashMap<String,?String>();
?Element?prompt?=?prompts.get(j);
?List<?>?attributes?=prompt.getAttributes();
? for?( int?k?=?0;?k?<?attributes.size();?k++)?{
?String?attribute?=?attributes.get(k).toString();
?System.out.println(?attributes.get(k));
?String[]?keyAndvalue?=?attribute.split(":")[1].trim().replace("]",?"").split("=");
?String?key?=?keyAndvalue[0];
?String?value?=?keyAndvalue[1].replaceAll("\"",?"");
?promptMap.put(key,?value);
?}
?list.add(promptMap);
?}
?}
?}
?}? catch?(Exception?e)?{
?e.printStackTrace();
?}
?System.out.println(list);
? return?list;
?}
? /**
??*?list<Map<key,value>>?轉換成?prompts?xml字符串形式
??*? @param ?prompts
??*? @return
?? */
? public? static?String?promptsToXmlString(List<Map<String,?String>>??prompts){
?String?resultXmlString?="";
?????? try?{
// ?Result?resultXml?=?new?StreamResult(new?FileOutputStream("d:\\person.xml"));
????????? // 用來得到XML字符串形式???
????????? // ?一個字符流,可以用其回收在字符串緩沖區中的輸出來構造字符串???
????????????StringWriter?writerStr?=? new?StringWriter();???
???????????? // ?構建轉換結果樹所需的信息。???
????????????Result?resultStr?=? new?StreamResult(writerStr);??
????????????
??????SAXTransformerFactory?factory?=?(SAXTransformerFactory)SAXTransformerFactory.newInstance();??
?TransformerHandler?tfHandler?=?factory.newTransformerHandler();
?
?Transformer?transformer?=?tfHandler.getTransformer();??
?transformer.setOutputProperty(OutputKeys.ENCODING,?"UTF-8");? // 編碼格式是UTF-8??
?transformer.setOutputProperty(OutputKeys.INDENT,?"yes");? // 換行??
?
// ?tfHandler.setResult(resultXml);??
?tfHandler.setResult(resultStr);???
?tfHandler.startDocument();
?AttributesImpl?attr?=? new?AttributesImpl();??
?tfHandler.startElement("",?"",?"prompts",?attr);? // 定義person節點??
? for?(Map<String,?String>?map?:?prompts)?{
?attr.clear();
? for(String?key?:?map.keySet()){
?attr.addAttribute("",?"",?key,?"",?map.get(key));
?}
?tfHandler.startElement("",?"",?"prompt",?attr);? // 定義person節點??
?tfHandler.endElement("",?"",?"prompt");
?}
?tfHandler.endElement("",?"",?"prompts");
?tfHandler.endDocument();? // 結束xml文檔??
?resultXmlString?=?writerStr.getBuffer().toString();???
?}? catch?(Exception?e)?{
?e.printStackTrace();
?}??
? return?resultXmlString;
?}
?
? public? static? void?main(String[]?args)?{
?List<Map<String,?String>>?list?=? new?ArrayList<Map<String,String>>();
? for?( int?i?=?0;?i?<?5;?i++)?{
?Map<String,?String>?map?=? new?HashMap<String,?String>();
?map.put("dpId",?"DP0");
?map.put("id",?String.valueOf((Math.random()*10)));
?map.put("type",?"sapVariable");
?map.put("optional",?"true");
?map.put("technicalName",?"S_CPDLB");
?map.put("name",?"產品大類");
?list.add(map);
?}
?String?resultXmlString?=?promptsToXmlString(list);
?System.out.println(resultXmlString);
?
?String?xmlString?=?"<returnResult><errCode>S</errCode><errMsg></errMsg><prompts>"?+?
?"<prompt?dpId=\"DP0\"?id=\"0\"?type=\"sapVariable\"?optional=\"true\"?technicalName=\"S_CPDLB\"?name=\"產品大類\"?></prompt>"+
?"<prompt?dpId=\"DP0\"?id=\"1\"?type=\"sapVariable\"?optional=\"true\"?technicalName=\"0S_MATGR\"?name=\"Material?group\"?></prompt>"+
?"<prompt?dpId=\"DP0\"?id=\"2\"?type=\"sapVariable\"?optional=\"true\"?technicalName=\"0S_MATERIAL\"?name=\"Material\"?></prompt>"+
?"<prompt?dpId=\"DP0\"?id=\"3\"?type=\"sapVariable\"?optional=\"true\"?technicalName=\"0S_SALESORG\"?name=\"Sales?Organization\"?></prompt>"+
?"<prompt?dpId=\"DP0\"?id=\"4\"?type=\"sapVariable\"?optional=\"true\"?technicalName=\"S_ZPLTYP\"?name=\"渠道細類\"?></prompt>"+
?"<prompt?dpId=\"DP0\"?id=\"5\"?type=\"sapVariable\"?optional=\"true\"?technicalName=\"0S_CUSTOMER\"?name=\"Customer\"?></prompt>"+
?"<prompt?dpId=\"DP0\"?id=\"6\"?type=\"sapVariable\"?optional=\"true\"?technicalName=\"0I_DAYIN\"?name=\"Day?Interval\"?></prompt>"+
?"<prompt?dpId=\"DP0\"?id=\"7\"?type=\"sapVariable\"?optional=\"true\"?technicalName=\"0I_DAY\"?name=\"DATE\"?></prompt>"+
?"</prompts></returnResult>";
?
?getPrompts(xmlString);
?}
}
轉載于:https://my.oschina.net/sbcagf/blog/782876
總結
以上是生活随笔為你收集整理的xmlUtil 解析 创建的全部內容,希望文章能夠幫你解決所遇到的問題。