如何解析字符串类型的xml
生活随笔
收集整理的這篇文章主要介紹了
如何解析字符串类型的xml
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
思路就是:拿到xml,組裝成map,循環取出。
代碼如下:
1 public class XMLPass 2 { 3 public static void main(String[] args){ 4 XMLPass doc = new XMLPass(); 5 String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+ 6 "<memberInfo>"+ 7 "<userType>2</userType>"+ 8 "<member class=\"com.member.MemberImpl\">"+ 9 "<id>1001</id>"+ 10 "<name>zqh</name>"+ 11 "</member>"+ 12 "<company>"+ 13 "<id>1002</id>"+ 14 "<cc>zqh公司</cc>"+ 15 "<dd>sss</dd>"+ 16 "</company>"+ 17 "</memberInfo>"; 18 String userType =""; 19 for(int i =0;i<doc.parse(xml).size();i++) 20 { 21 22 Map sa = (Map) doc.parse(xml).get(i); 23 24 25 if(sa.containsKey("userType")) 26 { 27 userType = sa.get("userType").toString(); 28 System.out.println(userType); 29 continue; 30 } 31 32 if(userType.equals("1")){ 33 String id = sa.get("id").toString(); 34 String name = sa.get("name").toString(); 35 System.out.println(id); 36 System.out.println(name); 37 break; 38 } 39 40 if(userType.equals("2") && sa.containsKey("cc")){ 41 String id = sa.get("id").toString(); 42 String cc = sa.get("cc").toString(); 43 String cc = sa.get("dd").toString(); 44 System.out.println(id); 45 System.out.println(cc); 46 System.out.println(dd); 47 break; 48 } 49 50 } 51 52 53 } 54 55 /** 56 * 解析xml字符串成List<Map> 57 * 58 * @param String 59 * @return List 60 */ 61 public List parse(String xmlDoc) { 62 // 創建一個新的字符串 63 StringReader xmlString = new StringReader(xmlDoc); 64 // 創建新的輸入源SAX 解析器將使用 InputSource 對象來確定如何讀取 XML 輸入 65 InputSource source = new InputSource(xmlString); 66 // 創建一個新的SAXBuilder 67 SAXBuilder saxb = new SAXBuilder(); 68 69 List result = null; 70 try { 71 result = new ArrayList(); 72 // 通過輸入源構造一個Document 73 Document doc = saxb.build(source); 74 // 取的根元素 75 Element root = doc.getRootElement(); 76 77 // 得到根元素所有子元素的集合 78 List node = root.getChildren(); 79 Element et = null; 80 for (int i = 0; i < node.size(); i++) { 81 Map map = new HashMap(); 82 et = (Element) node.get(i);// 循環依次得到子元素 83 84 if(et.getChildren().size()==0){ 85 map.put(et.getName(), et.getText()); // 裝入到Map中 86 result.add(map); 87 continue; 88 } 89 90 List subNode = et.getChildren(); // 得到內層子節點 91 Element subEt = null; 92 for (int j = 0; j < subNode.size(); j++) { 93 subEt = (Element) subNode.get(j); // 循環依次得到子元素 94 map.put(subEt.getName(), subEt.getText()); // 裝入到Map中 95 } 96 97 // Map獲取到值時才裝入 98 if (map.size() > 0) 99 result.add(map); 100 } 101 } catch (JDOMException e) { 102 e.printStackTrace(); 103 } catch (IOException e) { 104 e.printStackTrace(); 105 } 106 return result; 107 } 108 }?
轉載于:https://www.cnblogs.com/zqh005/p/4264809.html
總結
以上是生活随笔為你收集整理的如何解析字符串类型的xml的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenResty 通过二级域名做跳转
- 下一篇: DB设计原则(一)字段名定义避免二义性。