解析XMLファイルのDom 4 J

13422 ワード

XMLリソース:
Maven Repository-Dom4J:https://mvnrepository.com/artifact/dom4j/dom4j
Maven Repository-Jaxen:https://mvnrepository.com/artifact/jaxen/jaxen
XML実戦:
ターゲットファイル(resources/car.xml)


    
            >
            >
      >
    
            >
            >
      >
    >

読み取り(Dom 4 jParseTest.java):
package com.example.test;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.junit.Test;

import java.io.*;
import java.util.List;

public class Dom4jParseTest {
    private File file = new File(this.getClass().getClassLoader().getResource("car.xml").getPath());

    @Test
    public void dom4jRetrieve(){
        try {
            SAXReader saxReader = new SAXReader();
            Document document = saxReader.read(file);
            //        
            Element rootElement = document.getRootElement();
            System.out.println(rootElement.getName());
            //            
            List elements = rootElement.elements();
            System.out.println("         :" + elements.size());
            for (Element element:elements){
                //        
                System.out.println("  :" + element.elementText("  "));
                System.out.println("  :" + element.elementText("  "));
                //        
                System.out.println("    :" + element.element("  ").attribute("    ").getValue());
            }
        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }
}

追加-デフォルト(Dom 4 jParseTest.java):
package com.example.test;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.junit.Test;

import java.io.*;

public class Dom4jParseTest {
    private File file = new File(this.getClass().getClassLoader().getResource("car.xml").getPath());

    @Test
    public void dom4jAdd(){
        try {
            SAXReader saxReader = new SAXReader();
            Document document = saxReader.read(file);
            //            
            Element firstElement = (Element)document.getRootElement().elements().get(0);
            //     “  ”     “30”
            firstElement.addElement("  ").setText("30");
            //  XML  
            OutputStream outputStream = new FileOutputStream(file);
            OutputFormat outputFormat = OutputFormat.createPrettyPrint();
            XMLWriter xmlWriter = new XMLWriter(outputStream, outputFormat);
            xmlWriter.write(document);
            xmlWriter.close();
        } catch (DocumentException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

結果ファイル(car.xml)


 
   
        >  
        >  
    30  >
    >  
   
        >  
        > 
    > 
    >

追加-場所の指定(Dom 4 jParseTest.java):
package com.example.test;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.junit.Test;

import java.io.*;
import java.util.List;

public class Dom4jParseTest {
    private File file = new File(this.getClass().getClassLoader().getResource("car.xml").getPath());

    @Test
    public void dom4jAdd(){
        try {
            SAXReader saxReader = new SAXReader();
            Document document = saxReader.read(file);
            //            
            List elements = document.getRootElement().elements();
            //     
            Element element = DocumentHelper.createElement("  ");
            element.setText("        ");
            //        
            elements.add(1, element);
            //  XML  
            OutputStream outputStream = new FileOutputStream(file);
            OutputFormat outputFormat = OutputFormat.createPrettyPrint();
            XMLWriter xmlWriter = new XMLWriter(outputStream, outputFormat);
            xmlWriter.write(document);
            xmlWriter.close();
        } catch (DocumentException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

結果ファイル(car.xml)


 
   
        >  
        > 
    >  
            >
   
        >  
        > 
    > 
    >

更新(Dom 4 jParseTest.java):
package com.example.test;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.junit.Test;

import java.io.*;

public class Dom4jParseTest {
    private File file = new File(this.getClass().getClassLoader().getResource("car.xml").getPath());

    @Test
    public void dom4jUpdate(){
        try {
            SAXReader saxReader = new SAXReader();
            Document document = saxReader.read(file);
            //            
            Element firstElement = (Element)document.getRootElement().elements().get(0);
            //        “  ”
            firstElement.element("  ").setText("  ");
            //  XML  
            OutputStream outputStream = new FileOutputStream(file);
            OutputFormat outputFormat = OutputFormat.createPrettyPrint();
            XMLWriter xmlWriter = new XMLWriter(outputStream, outputFormat);
            xmlWriter.write(document);
            xmlWriter.close();
        } catch (DocumentException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

結果ファイル(car.xml)


 
   
        >  
        > 
    >  
   
        >  
        > 
    > 
    >

削除(Dom 4 jParseTest.java):
package com.example.test;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.junit.Test;

import java.io.*;

public class Dom4jParseTest {
    private File file = new File(this.getClass().getClassLoader().getResource("car.xml").getPath());

    @Test
    public void dom4jDelete(){
        try {
            SAXReader saxReader = new SAXReader();
            Document document = saxReader.read(file);
            //            
            Element firstElement = (Element)document.getRootElement().elements().get(0);
            //     
            firstElement.remove(firstElement.element("  "));
            //  XML  
            OutputStream outputStream = new FileOutputStream(file);
            OutputFormat outputFormat = OutputFormat.createPrettyPrint();
            XMLWriter xmlWriter = new XMLWriter(outputStream, outputFormat);
            xmlWriter.write(document);
            xmlWriter.close();
        } catch (DocumentException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

結果ファイル(car.xml)


 
   
        > 
    >  
   
        >  
        > 
    > 
    >

作成(Dom 4 jParseTest.java):
package com.example.test;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import org.junit.Test;

import java.io.*;

public class Dom4jParseTest {
    private File file = new File(this.getClass().getClassLoader().getResource("car.xml").getPath());

    @Test
    public void dom4jCreate(){
        try {
            //    XML
            Document document = DocumentHelper.createDocument();
            //     
            document.addElement("root").setText("   ");
            //  XML  
            OutputStream outputStream = new FileOutputStream(file);
            OutputFormat outputFormat = OutputFormat.createPrettyPrint();
            XMLWriter xmlWriter = new XMLWriter(outputStream, outputFormat);
            xmlWriter.write(document);
            xmlWriter.close();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

結果ファイル(car.xml)


   

StringをXML(Dom 4 jParseTest.java):
package com.example.test;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import org.junit.Test;

import java.io.*;

public class Dom4jParseTest {
    private File file = new File(this.getClass().getClassLoader().getResource("car.xml").getPath());

    @Test
    public void dom4jStringToXML(){
        try {
            String text = "    >";
            //String->XML
            Document document = DocumentHelper.parseText(text);
            //  XML  
            OutputStream outputStream = new FileOutputStream(file);
            OutputFormat outputFormat = OutputFormat.createPrettyPrint();
            XMLWriter xmlWriter = new XMLWriter(outputStream, outputFormat);
            xmlWriter.write(document);
            xmlWriter.close();
        } catch (DocumentException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

結果ファイル(car.xml)


    >

XMLをString(Dom 4 jParseTest.java)に変換:
package com.example.test;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;

import java.io.*;

public class Dom4jParseTest {
    private File file = new File(this.getClass().getClassLoader().getResource("car.xml").getPath());

    @Test
    public void dom4jXMLToString(){
        try {
            SAXReader saxReader = new SAXReader();
            Document document = saxReader.read(file);
            //     
            Element rootElement = document.getRootElement();
            //XML-String
            String xmlStr = rootElement.asXML();
            System.out.println(xmlStr);
        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }
}

XPath位置決め(Dom 4 jParseTest.java):
package com.example.test;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;

import java.io.*;
import java.util.List;

public class Dom4jParseTest {
    private File file = new File(this.getClass().getClassLoader().getResource("car.xml").getPath());

    @Test
    public void dom4jXMLToString(){
        try {
            SAXReader saxReader = new SAXReader();
            Document document = saxReader.read(file);
            //         
            String xpath = "//  ";
            List elements = document.selectNodes(xpath);
            for (Element element:elements){
                System.out.println(element.getText());
            }

            //          
            Element firstElement = (Element) document.selectSingleNode(xpath);
            System.out.println(firstElement.getText());

            //       2020     
            String xpath2020 = "//  [@    ='2020']";
            Element secondElement = (Element) document.selectSingleNode(xpath2020);
            System.out.println(secondElement.getText());
        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }
}