JDOM

JDOM是什麼:

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

JDOM與其餘幾種XML解析工具的比較:

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

結合文章的結論,對於小型xml文件, 並且調用不頻繁的操做, 能夠直接使用JDOM來完成。工具

示例:

以idc解析xml爲例ui

xml:spa

<?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代碼:code

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;
}
相關文章
相關標籤/搜索