• 如何解析字符串类型的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 }
  • 相关阅读:
    UML建模语言
    iOS 键盘挡住UITextField
    IOS架构师之路:我对IOS架构的点点认识(大纲)
    自己动手写处理器之第四阶段(1)——第一条指令ori的实现
    【Android Studio】studio学习系列(一) 从eclipse导入project
    Android二维码开源项目zxing编译
    第九十六题(编写strcpy 函数)
    oracle子查询
    打印池
    咏南中间件和开发框架介绍文档下载
  • 原文地址:https://www.cnblogs.com/zqh005/p/4264809.html
Copyright © 2020-2023  润新知