• Java如何使用JDOM解析XML呢?


    转自:

    Java如何使用JDOM解析XML呢?

    下文笔者讲述使用JDOM解析XML的方法分享,如下所示:

    JDOM简介

    JDOM是一个开源项目
    它基于树形结构
    使用Java代码对XML文档实现解析、生成、序列化及多种操作

     JDOM与DOM非常类似
    它是处理XML的纯JAVA API
     API大量使用了Collections类,且JDOM仅使用具体类而不使用接口
    JDOM 它自身不包含解析器。它通常使用 SAX2 解析器来解析和验证输入 XML 文档 
    

    JDOM定义

    JDOM中JAXP是用于XML语法分析的Java API,包含以下包信息:

    1. org.w3c.dom W3C推荐的用于XML标准文档对象模型的Java工具。
    2. org.xml.sax 用于对XML进行语法分析的事件驱动的简单API。
    3. javax.xml.parsers 工厂化工具,允许应用程序开发人员获得并配置特殊的语法分析器工具,JDOM能够替换

    JDOM解析xml步骤

    1.建立解析器
    SAXBuilder sb=new SAXBuilder();
    //返回Document文档
    Document doc=sb.build(new FileInputStream(XmlFname));
    2. DOM处理
    元素基于Content类.Element类操作同Dom.详见Java XML解析 - 利用dom(org.w3c.dom)解析XML 
    3. DOM结果处理(输出/保存)
    Format fo=Format.getCompactFormat();//取得输出格式Format
    //fo.setEncoding("GB2312");
    XMLOutputter outputter=new XMLOutputter(fo);
    FileWriter write=new FileWriter(XmlFname);//这里可以是PrintWriter形式的(任何Writer流).
    outputter.output(doc,write/*Writer流,见构造函数*/);
    write.close();
    

    例:
    JDOM解析xml例子

    //xml文件
            
            
                
            1        
                    
                1        
                武汉        
                    
                    
                2        
                石家庄        
                    
                    
                3        
                北京        
                    
                
                
            2        
                    
                1        
                重庆        
                    
                    
                2        
                武汉        
                    
                    
                3        
                上海        
                    
                    
                4        
                东京        
                    
                
                
            3        
                    
                1        
                上海        
                    
                    
                2        
                纽约        
                    
                
    
    //解析XML testJDOM.java
    public class testJDOM {  
        public static void main(String[] args) {  
            try {  
                File file = new File("AirPortLine.xml");  
                SAXBuilder builder = new SAXBuilder();  
                Document doc = builder.build(file);  
      
                parseJDOM(doc);// 解析XML文档  
      
            } catch (Exception e) {  
                System.out.println("Can't read the file");  
            }  
        }  
      
        // 解析XML文档  
        private static void parseJDOM(Document doc) {  
            Element root = doc.getRootElement();  
            List lineList = root.getChildren("line");// 也可使用root.getChildren()  
            for (Iterator iter = lineList.iterator(); iter.hasNext();) {  
                Element lineElement = (Element) iter.next();// 获取元素  
      
                String lid = lineElement.getAttributeValue("lid");// 获取元素的lid属性值  
                String num = lineElement.getAttributeValue("num");// 获取元素的num属性值  
      
                System.out.println("==lid:" + lid);  
                System.out.println("==num:" + num);  
      
                Element idElement = lineElement.getChild("id");// 获得标签下的子元素  
                String id = idElement.getText();// // 获得标签下的子元素值  
                System.out.println("==路线id:" + id);  
      
                List stationList = lineElement.getChildren("station");// 获得列表  
                for (Iterator subIter = stationList.iterator(); subIter.hasNext();) {  
                    Element stationElement = (Element) subIter.next();// 获取元素  
      
                    Element sidElement = stationElement.getChild("sid");// 获得标签下的子元素  
                    Element snameElement = stationElement.getChild("sname");// 获得标签下的子元素  
                    String sid = sidElement.getText();// 获得标签下的子元素值  
                    String sname = snameElement.getText();// 获得标签下的子元素值  
      
                    System.out.println("==路线sid:" + sid);  
                    System.out.println("==路线sname:" + sname);  
                }  
            }  
        }  
    }  
    
    JDOM注意事项: 
      JDOM对象中,XML元素就是Element的实例
       XML属性就是Attribute的实例
       XML文档本身就是Document的实例
    -------------------------------------------------------------
    JDOM对象就是像Document、Element和Attribute这些类的直接实例
      创建JDOM对象,直接使用new操作符即可 
  • 相关阅读:
    自定义注解
    15.2 OpenGL可编程片段处理:着色器执行
    游戏被攻击了怎么办
    web-logic-ssrf内网渗透
    使用vue扫描扫描仪图像
    【刷题专栏—突破思维】142. 环形链表 II
    Win安装protobuf和IDEA使用protobuf插件
    动态规划(Dynamic programming)详解
    六、Vue基础之六
    这是一个lonely的问题——二进制
  • 原文地址:https://blog.csdn.net/qq_25073223/article/details/126192635