zoukankan      html  css  js  c++  java
  • xml解析

    创建一个Java类测试下,直接f复制下面代码到类里

    *************************类开始************************************

    package xml;
    
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.DocumentHelper;
    import org.dom4j.Element;
    
    public class TestXml {
        public static void main(String[] args) {
            String xml = "<?xml version='1.0' encoding='UTF-8'?>"+
                    "<cenode0 xmlns:ns0='http://test.com/'>"+
                       "<node1></node1>"+
                       "<node2>"+
                           "<node3>测试数据</node3>"+
                           "<node4>000110011</node4>"+
                           "<node5>"+
                                 "<node7>ces3</node7>"+
                                 "<node8>ces4</node8>"+
                           "</node5>"+
                           "<node6>"+ 
                              "<node9>ces1</node9>"+
                              "<node10>ces2</node10>"+
                           "</node6>"+
                       "</node2>"+
                    "</cenode0>";
            
            Map map = test2(xml);
            System.out.println(map);
        }    
        
        
        public static Map test2(String xml){
            
            Document doc = null;
            Map m = new HashMap();
            // 下面的是通过解析xml字符串的
            try {
                doc = DocumentHelper.parseText(xml); // 将字符串转为XML
                Element node = doc.getRootElement(); // 获取根节点
                List<Element> listElement=node.elements();//所有一级子节点的list
                for(Element e:listElement){//遍历所有一级子节点
                    m.put(e.getName(), initnode(e));
                }
    
                System.out.println(m);
                return m;
            } catch (DocumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return m;
        }
        
        
        public static Object initnode(Element element){
            List<Element> listElement=element.elements();//所有一级子节点的list
            if(listElement!=null&&listElement.size()>0){
                Map m = new HashMap();
                for(Element e:listElement){//遍历所有一级子节点
                    m.put(e.getName(), initnode(e));
                }
                return m;
            }else{
                return element.getStringValue().toString();
            }
        }
    }

    *************************类结束************************************

    结果 :   {node1=, node2={node4=000110011, node5={node8=ces4, node7=ces3}, node3=测试数据, node6={node10=ces2, node9=ces1}}}

  • 相关阅读:
    sed 命令
    find命令详解
    texlive、
    linux source命令与export命令的区别
    vscode浏览器打开html vscode修改默认浏览器
    npm install说明
    有关必须组件化的需求
    日志文件上传的时机
    TypeScript vs. C#: LINQ
    JavaScript 运行机制详解:再谈Event Loop
  • 原文地址:https://www.cnblogs.com/xueershewang/p/15508124.html
Copyright © 2011-2022 走看看