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