Dom4j工具解析XML

来源:互联网 发布:3des算法的c语言实现 编辑:程序博客网 时间:2024/05/21 22:58

Dom4j非官方工具,不在jdk中

使用步骤:            1)导入dom4j的核心包。 dom4j-1.6.1.jar            2)编写Dom4j读取xml文件代码

Dom4j提供的xml解析器对象

public static void main(String[] args) {        try {            //1.创建一个xml解析器对象            SAXReader reader = new SAXReader();            //2.读取xml文档,返回Document对象            Document doc = reader.read(new File("./src/contact.xml"));            System.out.println(doc);        } catch (DocumentException e) {            e.printStackTrace();            throw new RuntimeException(e);        }    }

//得到节点信息    @Test    public void test1() throws Exception {        //读取xml文档,返回Document对象        SAXReader reader = new SAXReader();        Document document = reader.read(new File("XmlDemo.xml"));        //nodeIterator:得到当前节点下的所有节点对象        Iterator<Node> it = document.nodeIterator();        while (it.hasNext()) {            //Node node =(Node) it.next();            Node node = it.next();            //判断其下面是否有子节点            //只有标签节点才会有子节点(节点、标签、属性、文本)            //判断当前节点是否是标签节点            if(node instanceof Element){                Element element = (Element) node;                Iterator<Node> it2 = element.nodeIterator();                while(it2.hasNext()){                    Node n2 = it2.next();                    System.out.println(n2.getName());                }            }        }           }

/*     * 遍历xml文档的所有节点     */    @Test    public void test2() throws Exception{        //读取xml文档,返回Document对象        SAXReader reader = new SAXReader();        Document doc = reader.read(new File("XmlDemo.xml"));        //得到根标签        Element rootElement = doc.getRootElement();        getChildNodes(rootElement);    }    private void getChildNodes(Element element){        System.out.println(element.getName());        //得到子节点        Iterator<Node> it = element.nodeIterator();        while(it.hasNext()){            Node node = it.next();            //判断是否是标签节点            if(node instanceof Element){                Element el = (Element)node;                getChildNodes(el);            }        }    }

/*     * 获取属性     */    @Test    public void test4() throws Exception{        //1.读取xml文档,返回Document对象        SAXReader reader = new SAXReader();        Document doc = reader.read(new File("XmlDemo.xml"));        //获取属性:(先获的属性所在的标签对象,然后才能获取属性)        //1.得到标签对象        Element contactElem = doc.getRootElement().element("book");        //2.得到属性        //2.1  得到指定名称的属性值        /*        String idValue = contactElem.attributeValue("id");        System.out.println(idValue);        */        //2.2 得到指定属性名称的属性对象        /*Attribute idAttr = contactElem.attribute("id");        //getName: 属性名称    getValue:属性值        System.out.println(idAttr.getName() +"=" + idAttr.getValue());*/        //2.3 得到所有属性对象,返回LIst集合        /*List<Attribute> list = contactElem.attributes();        //遍历属性        for (Attribute attr : list) {            System.out.println(attr.getName()+"="+attr.getValue());        }*/        //2.4 得到所有属性对象,返回迭代器        Iterator<Attribute> it = contactElem.attributeIterator();        while(it.hasNext()){            Attribute attr = it.next();            System.out.println(attr.getName()+"="+attr.getValue());        }    }

/*     * 获取文本     */    @Test    public void test5() throws Exception{        //1.读取xml文档,返回Document对象        SAXReader reader = new SAXReader();        Document doc = reader.read(new File("XmlDemo.xml"));        /*         * 注意: 空格和换行也是xml的内容         */        String content = doc.getRootElement().getText();        System.out.println(content);        //获取文本(先获取标签,再获取标签上的文本)        Element nameELem =             doc.getRootElement().element("book").element("title");        //得到文本        String text = nameELem.getText();        System.out.println(text);        //得到指定子标签名的文本内容        String text2 =             doc.getRootElement().element("book").elementText("author");        System.out.println(text2);    }

常用方法:

            节点:                Iterator  Element.nodeIterator();                  //获取当前标签节点下的所有子节点            标签:                  Element  Document.getRootElement();  //获取xml文档的根标签                         Element   ELement.element("标签名") //指定名称的第一个子标签                    List<Element>    Element.elements(); //获取所有子标签            属性:                String   Element.attributeValue("属性名") //获取指定名称的属性值                 Attribute   Element.attribute("属性名");//获取指定名称的属性对象                         Attribute.getName()  //获取属性名称                        Attibute.getValue()  //获取属性值                    List<Attribute>  Element.attributes();  //获取所有属性对象                    Iterator<Attribute> Element.attibuteIterator();                     //获取所有属性对象            文本:                        Element.getText();                          //获取当前标签的文本获取当前标签的指定名称的子标签的文本内容
0 0
原创粉丝点击