JDOM

JDOM是什么:

To provide a complete, Java-based solution for accessing, manipulating, and outputting XML data from Java code.

JDOM与其他几种XML解析工具的比较:

DOM VS SAX VS JDOM VS DOM4J: http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/17/3082949.html

结合文章的结论,对于小型xml文件, 而且调用不频繁的操作, 可以直接使用JDOM来完成。

示例:

以idc解析xml为例

xml:

<?xml version="1.0" encoding="UTF-8"?>
<Agent>
    <Region>
    <RegionName>beijing</RegionName>
        <IDC>
        <IDCName>CY</IDCName>
            <Item>
                <IP>192.168.121.0</IP>
                <MASK>255.255.255.0</MASK>
            </Item>
            <Item>
                <IP>192.168.122.0</IP>
                <MASK>255.255.255.0</MASK>
            </Item>
        </IDC>
    </Region>
    <Region>
    <RegionName>shanghai</RegionName>
        <IDC>
        <IDCName>HP</IDCName>
            <Item>
                <IP>192.168.63.0</IP>
                <MASK>255.255.255.0</MASK>
            </Item>
        </IDC>
    </Region>
</Agent>

Java代码:

public static Idc parserXml(String fileName, String ip) {
    SAXBuilder builder = new SAXBuilder();
    Idc resIdc = new Idc();

    try {
        Document document = builder.build(fileName);
        Element sgagent = document.getRootElement();
        List regionList = sgagent.getChildren("Region");
        for (Object ele:regionList) {
            Element region = (Element) ele;
            List idcs = region.getChildren("IDC");
            for (Object eleIdc:idcs) {
                Element idc = (Element)eleIdc;
                List items = idc.getChildren("Item");
                for (Object eleItem:items) {
                    Element item = (Element)eleItem;
                    String idcIp = item.getChild("IP").getValue();
                    String idcMask = item.getChild("MASK").getValue();
                    int mask = IpUtil.convertMaskToInt(idcMask);
                    if (IpUtil.checkSameSegment(ip, idcIp, mask)) {
                        resIdc.region = region.getChild("RegionName").getValue();
                        resIdc.idc = idc.getChild("IDCName").getValue();
                        return resIdc;
                    }
                }
            }
            System.out.println(region.getChild("RegionName").getName() + ":" + region.getChild("RegionName").getValue());
        }
    } catch (JDOMException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    resIdc.region = "unkown";
    resIdc.idc = "unkown";
    return resIdc;
}
时间: 2024-10-23 06:07:44

JDOM的相关文章

JDOM读取xml

[摘 要]JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析.生成.序列化以及多种操作. 一.JDOM 简介 JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析.生成.序列化以及多种操作. JDOM 直接为JAVA编程服务.它利用更为强有力的JAVA语言的诸多特性(方法重载.集合概念以及映射),把SAX和DOM的功能有效地结合起来. 在使用设计上尽可能地隐藏原来使用XML过程中的复杂性.利用JDOM处理XML文档将是一件轻松.简单的事.

java jdom 解析CDATA内容

package com; import java.io.IOException; import java.io.StringReader; import java.util.List; import org.jdom.CDATA; import org.jdom.Comment; import org.jdom.DocType; import org.jdom.Document; import org.jdom.Element; import org.jdom.EntityRef; import

dom、SAX、Jdom、dom4j四种解析xml方式简单总结

1,dom和sax是java官方提供的解析方式,不需要导入额外jar包,dom甚至一种标准. dom是一次性将整个xml文件dom结构加载进内存,因此比较占空间. 优点: *形成了树结构,直观好理解,代码更易编写 *解析过程中树结构保留在内存中,方便修改 缺点: !当Xml文件过大时,对内存消耗过大,容易影响解析性能并造成内存溢出. 2,sax是一种基于事件驱动的xml解析方式.在使用是需要编写专门的handler,在文档开头会触发startDocument()方法.解析到节点除法startEl

【XML配置文件读取】使用jdom读取XML配置文件信息

在项目中我们经常需要将配置信息写在配置文件中,而XML配置文件是常用的格式. 下面将介绍如何通过jdom来读取xml配置文件信息. 配置文件信息 <?xml version="1.0" encoding="UTF-8"?> <config> <base-config> <stringValue>Hello world</stringValue> <integerValue>8</integ

Jdom操作xml,按照指定要求分类

转自本人博客:http://www.xgezhang.com/jdom_xml_separate.html JDOM是两位著名的 Java 开发人员兼作者,Brett Mclaughlin 和 Jason Hunter 的创作成果, 2000 年初在类似于Apache协议的许可下,JDOM作为一个开放源代码项目正式开始研发了.它已成长为包含来自广泛的 Java 开发人员的投稿.集中反馈及错误修复的系统,并致力于建立一个完整的基于 Java 平台的解决方案,通过 Java 代码来访问.操作并输出

摘抄的 JAVA JDOM 操作XML文件

JDOM修炼篇 用过XERCES的程序员都会感到,有时候用一句话就可以说清楚的事,当用XERCES的API来实现时,要三四行程序. 回页首 获得并安装JDOM 在 http://www.jdom.org/可以下载JDOM的最新版本,将压缩包中的jdom.jar及lib目录下的全部jar包加入到classpath就可以了. 回页首 用JDOM解析XML JDOM模型的全部类都在org.jdom.*这个包里,org.jdom.input.*这个包里包含了JDOM的解析器,其中的DOMBuilder的

应用JDOM解析XML文件

package com; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.List; import org.jdom.Attribute; import org.jdom.Document; import org.jdom.Element; import org

Internal error: (org.jdom.input.JDOMParseException) Error on line 1: 文件提前结束。

环境: maven idea tomcat 异常描述: maven clean ,install都没问题,就是点击启动tomcat,时就报错,错误信息如下: Internal error: (org.jdom.input.JDOMParseException) Error on line 1: 文件提前结束.org.jdom.input.JDOMParseException: Error on line 1: 文件提前结束. at org.jdom.input.SAXBuilder.build(

jdom解析

package ioXml; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import javax.swing.text.StyledEditorKit.ItalicAction; import org.j

intellij (org.jdom.input.JDOMParseException) Error on line 1: 前言中不允许有内容。

今天打开前几天做的一个项目,发现运行后竟然出现 Error:Internal error: (org.jdom.input.JDOMParseException) Error on line 1: 前言中不允许有内容.org.jdom.input.JDOMParseException: Error on line 1: 前言中不允许有内容. at org.jdom.input.SAXBuilder.build(SAXBuilder.java:533) at org.jdom.input.SAXB