Java从零开始我爱编程

Java22dom4j解析XML

2016-11-29  本文已影响21人  chad_it

Java dom4j解析XML第一步:导入dom4j

http://www.jianshu.com/p/afc98f9bcfdb

Java dom4j解析XML第二步:读取XML文件

//创建SAXReader对象用于读取XML
SAXReader saxReader = new SAXReade();
//返回Document对象
Document document = saxReader.read(XML文件);

Java dom4j解析XML第三步:遍历Document对象

Iterator<Node> iterator = document.nodeIterator();
while(iterator.hasNext()) {
    Node node = iterator.next();
    //得到节点的标签名
    node.getName();
    //得到节点的类型名
    node.getNodeTypeName();
    //获取node下的节点
    Iterator<Node> nodeInterator = ((Element)node).nodeIterator();
    while(nodeInterator.hasNext()) {
        Node nextNode = nodeIterator.next();
        //如果xml文件使用“Pretty”样式,节点间的空格和回车也属于Node,只是没有标签名,且属于text
        if(nextNode instanceof Element) {
            nextNode.getName();
            nextNode.getNodeTypeName();
        }
    }
}
//获取根节点
Element rootElement = document.getRootElement();
getElementsFrom(rootElement);
private static void getElementsFrom(Element element) {
    //获取某个节点的所有直接子节点
    List<Element> elements = element.elements();
    //遍历
    for(Element ele : elements) {
        //判断节点的属性个数
        if(ele.attributeCount() > 0) {
            //遍历节点的属性
            for(int i = 0; i < ele.attributeCount(); i ++) {
                Attribute attribute = ele.attribute(i);
            }
        }
        //节点的标签名
        ele.getName();
        //判断某个节点是否只包含文本内容
        if(ele.isTextOnly()) {
            //节点下的文本内容
            ele.getText();
        }
        getElementsFrom(ele);
    }
}
//获取节点指定标签名的子节点
element.element(标签名);
//获取节点指定标签名的子节点的text
element.elementText(标签名);
//获取节点指定属性名的属性
element.attribute(属性名);
//获取节点指定属性名的属性值
element.attributeValue(属性名);
上一篇下一篇

猜你喜欢

热点阅读