java学习笔记——xml的使用

xml的使用

先贴代码:

books.xml:

<?xml version="1.0" encoding="UTF-8"?>
<books>
    <book sn="SN12341232">
        <name>辟邪剑谱</name>
        <price>9.9</price>
        <author>班主任</author>
    </book>
    <book sn="SN12341231">
        <name>葵花宝典</name>
        <price>99.99</price>
        <author>班长</author>
    </book>
</books>

-----------------------------------------------------

import java.io.FileWriter;
import java.util.List;

import javax.xml.soap.Node;

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

public class myXMLTest {

    public static void main(String[] args) throws Exception {
//        getDocument();
//        getXML();
//        addXML();
        xpathTest();
    }
    
    public static Document getDocument() throws Exception {
        SAXReader reader = new SAXReader();
        Document document = reader.read("src/books.xml");
        return document;
    }
    
    public static void getXML() throws Exception {
        Document document = getDocument();
        Element root = document.getRootElement();
        
        List<Element> elements = root.elements();
        for(Element element : elements) {
            System.out.println(element.elementText("name"));
            System.out.println(element.elementText("price"));
            System.out.println(element.elementText("author"));
            
            System.out.println(element.attributeValue("sn"));
            
            System.out.println(new myBook(element.elementText("name"),
                    element.attributeValue("sn"), element.elementText("author"),
                    Double.valueOf(element.elementText("price"))));
        }
    }
    
    public static void addXML() throws Exception {
        Document document = getDocument();
        Element element = (Element)document.getRootElement().elements("book").get(1);
        Element girlElement = element.addElement("girl");
        girlElement.addText("凤姐");
        girlElement.addAttribute("boyfriend", "班长");
        
////        System.out.println(element.asXML());
//        FileWriter fWriter = new FileWriter("foo.xml");
//        document.write(fWriter);
//        fWriter.close();
        
//        XMLWriter xmlWriter = new XMLWriter(new FileWriter("foo1.xml"));
//        xmlWriter.write(document);
//        xmlWriter.close();
        
        OutputFormat outputFormat = OutputFormat.createPrettyPrint();
        XMLWriter xmlWriter = new XMLWriter(new FileWriter("fool3.xml"), outputFormat);
        xmlWriter.write(document);
        xmlWriter.close();
        
//        OutputFormat outputFormat = OutputFormat.createCompactFormat();
//        XMLWriter xmlWriter = new XMLWriter(new FileWriter("fool2.xml"), outputFormat);
//        xmlWriter.write(document);
//        xmlWriter.close();
    }
    
    public static void xpathTest() throws Exception {
        SAXReader saxReader = new SAXReader();
        Document document = saxReader.read("src/books.xml");
        
//        需求1. 获取books下的所有book标签  /books/book
        List<Element> books = document.selectNodes("books/book");
        for(Element bookElement : books) {
            System.out.println(bookElement.asXML());
        }
        
//        需求2. 获取根标签下的books元素下的book元素,且这个book元素拥有sn属性,
//        且值为SN12341231。下的name元素    /books/book[@sn='SN12341231']/name
        Element node = (Element) document.selectSingleNode("books/book[@sn='SN12341231']/name");
        System.out.println(node.asXML());
        
//        需求3. 获取根标签下的books元素下的第一个book元素    /books/book[1]
        Element element = (Element) document.selectSingleNode("/books/book[1]");
        System.out.println(element.asXML());
    }

}

上述代码 函数getDocument()、getXML()、addXML()需要先读取写明了文件,读取xml文件需要引用.jar文件dom4j-1.6.1.jar

addXML()中还列举了保存几种形式的xml文件的方式,比如美观型保存、紧凑型保存

代码函数xpathTest()中使用了xpath方式访问,需要引用.jar文件jaxen-1.1-beta-6.jar

 .jar资源地址:https://download.csdn.net/download/qq_25106373/10544902

猜你喜欢

转载自blog.csdn.net/qq_25106373/article/details/81070773