Java解析xml文件的方式

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

import javax.sound.midi.Soundbank;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.SQLOutput;

public class Main {

    public static void main(String[] args) throws ParserConfigurationException, IOException, SAXException, TransformerException {
        Document document=createhead();
        NodeList nodeList=document.getElementsByTagName("书");
        System.out.println(nodeList.getLength());
        //获取某个节点 index为索引
        Node node=nodeList.item(1);
        //获取某个节点里面的具体内容
        String str=node.getTextContent();
        System.out.println(str);
        //list(node);
        //addnode();
        //insertnode();
        //remove();
        update();
    }
   //递归遍历子节点
    private  static  Document createhead() throws ParserConfigurationException, IOException, SAXException {
        //创建工厂
        DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
        //用工厂对象创建一个解析器
        DocumentBuilder builder=dbf.newDocumentBuilder();
        //解析xml文件
        Document document=builder.parse("xml/Book.xml");
        //获取节点列表
        return  document;
    }
    private static void list(Node node){
        //如果是空格就不用输出
        if(node instanceof Element){
            System.out.println(node.getNodeName());
        }
        NodeList nodeList=node.getChildNodes();
        for (int i = 0; i < nodeList.getLength(); i++) {
            Node child = nodeList.item(i);
            list(child);
        }
    }
    //增加节点的方法
    private static  void addnode() throws ParserConfigurationException, IOException, SAXException, TransformerException {
        Document document=createhead();
        //创建节点
        Element element=document.createElement("作者");
        //添加节点内容
        element.setTextContent("创建节点");
        Node node=document.getElementsByTagName("书").item(1);
        node.appendChild(element);
        //把创建的内容添加到xml文件中
        TransformerFactory transformerFactory=TransformerFactory.newInstance();
        Transformer tf=transformerFactory.newTransformer();
        tf.transform(new DOMSource(document),new StreamResult(new FileOutputStream("xml/Book.xml")));
    }
    //在指定位置插入节点
    private  static  void insertnode() throws IOException, SAXException, ParserConfigurationException, TransformerException {
          Document document=createhead();
        //创建节点
        Element element = document.createElement("售价");
        element.setTextContent("59.00元");
        //得到参考节点
        Element ref =(Element) document.getElementsByTagName("售价").item(0);
        //在参考节点之前插入节点
        Element book1 = (Element)document.getElementsByTagName("书").item(0);
        book1.insertBefore(element, ref);
        TransformerFactory transformerFactory=TransformerFactory.newInstance();
        Transformer tf=transformerFactory.newTransformer();
        tf.transform(new DOMSource(document),new StreamResult(new FileOutputStream("xml/Book.xml")));
    }
    //删除节点
    private static void remove() throws IOException, SAXException, ParserConfigurationException, TransformerException {
        Document document=createhead();
        //得到目标节点
        Element element= (Element) document.getElementsByTagName("书").item(1);
        //得到删除的节点
        Element element1= (Element) element.getElementsByTagName("作者").item(0);
        element.removeChild(element1);
        TransformerFactory transformerFactory=TransformerFactory.newInstance();
        Transformer tf=transformerFactory.newTransformer();
        tf.transform(new DOMSource(document),new StreamResult(new FileOutputStream("xml/Book.xml")));
    }
    //修改节点
    private static void update() throws IOException, SAXException, ParserConfigurationException, TransformerException {
        Document document=createhead();
        Element element= (Element) document.getElementsByTagName("作者").item(0);
        element.setTextContent("李太白");
        TransformerFactory transformerFactory=TransformerFactory.newInstance();
        Transformer tf=transformerFactory.newTransformer();
        tf.transform(new DOMSource(document),new StreamResult(new FileOutputStream("xml/Book.xml")));
    }
}
 

猜你喜欢

转载自blog.csdn.net/W_violet/article/details/84590716