你的位置:首页 > Java教程

[Java教程]第一天加入博客园,很高兴,相互学习嘛,最近看老方的视频学了下dom解析xml,可以分享下,多谢大家支持,


dom解析

public static Document getDocument() throws Exception{
    //1.创建工厂
    DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
    //2.得到dom解析器
    DocumentBuilder builder=factory.newDocumentBuilder();
    //3.解析    return builder.parse(filename);//filename 为解析的

}

<?    <书>
        <书名 name = “xxx”>Java就业培训教程</书名>
        <作者>张孝祥</作者>
        <售价>59.00元</售价>
        </书>
    <书>
        <书名>JavaScript网页开发</书名>
        <作者>张孝祥</作者>
        <售价>28.00元</售价>
    </书>
</书架>

读操作1

NodeList list=document.getElementsByTagName("书名");
        Node node= list.item(1);
        String content=node.getTextContent();
        System.out.println(content);

读操作2遍历所有节点

        Node root = document.getElementsByTagName("书架").item(0);//得到根节点
        list(root);

private void list(Node node) {
        if(node instanceof Element ){
            System.out.println(node.getNodeName());
        }
        NodeList list = node.getChildNodes();
        for(int i=0;i<list.getLength();i++){

            Node child = list.item(i);
            list(child);
        }

}

获得目标节点属性

Element bookname=(Element) document.getElementsByTagName("书名").item(0);
        String value=bookname.getAttribute("name");
        System.out.println(value);

增加节点

//创建节点
        Element price = document.createElement("售价");
        price.setTextContent("59.00元");
       
        //创建节点挂载第一本书
        Element book =(Element) document.getElementsByTagName("书").item(0);
        book.appendChild(price);

//把更新的数据写回文档中
       
        TransformerFactory tffactory=TransformerFactory.newInstance();
        Transformer tf=tffactory.newTransformer();
        tf.transform(new DOMSource(document), new StreamResult(new FileOutputStream(filename)));

指定位置插入

//创建节点
        Element price = document.createElement("售价");
        price.setTextContent("59.00元");
        //得到参考节点
        Element refNode=(Element) document.getElementsByTagName("售价").item(0);
        //得到挂载的节点
        Element book =(Element) document.getElementsByTagName("书").item(0);
        //往book节点的指定位置插入
        book.insertBefore(price, refNode);

//把更新的数据写回文档中
       
        TransformerFactory tffactory=TransformerFactory.newInstance();
        Transformer tf=tffactory.newTransformer();
        tf.transform(new DOMSource(document), new StreamResult(new FileOutputStream(filename)));

添加节点的属性

Element bookname=(Element) document.getElementsByTagName("书名").item(0);
        bookname.setAttribute("name", "xxxxxx");

删除节点

//得到要删除的节点
        Element element=(Element) document.getElementsByTagName("售价").item(0);

element.getParentNode().removeChild(element);

//把更新的数据写回文档中
       
        TransformerFactory tffactory=TransformerFactory.newInstance();
        Transformer tf=tffactory.newTransformer();
        tf.transform(new DOMSource(document), new StreamResult(new FileOutputStream(filename)));