- 获取节点
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.IOException;
public class DOMTest {
public static void main(String[] args) {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse("src/main/java/test/books.xml");
NodeList nodeList = document.getElementsByTagName("name");
Node node = nodeList.item(0);
String name = node.getTextContent();
System.out.println(name);
}catch (ParserConfigurationException e){
e.printStackTrace();
}catch (SAXException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}
}
}
- 修改节点
import org.w3c.dom.Document
import org.w3c.dom.Node
import org.w3c.dom.NodeList
import org.xml.sax.SAXException
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.IOException
public class DOMTest02 {
public static void main(String[] args) {
//1.准备工作
//创建一个DocumentBuilderFactory对象
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance()
try {
//创建一个DocumentBuilder对象
DocumentBuilder db = dbf.newDocumentBuilder()
//通过DocumentBuilder对象的parse方法加载xml文件到项目
Document document = db.parse("src/main/java/test/books.xml")
//获取<name>节点
NodeList nodeList = document.getElementsByTagName("name")
//获取第一个<name>节点
Node node = nodeList.item(0)
//修改节点的内容
node.setTextContent("西游记")
//从内存写到文档同步操作
Transformer tf = TransformerFactory.newInstance().newTransformer()
tf.transform(new DOMSource(document),new StreamResult("src/main/java/test/books.xml"))
}catch (ParserConfigurationException e){
e.printStackTrace()
}catch (SAXException e){
e.printStackTrace()
}catch (IOException e){
e.printStackTrace()
}catch (TransformerConfigurationException e){
e.printStackTrace()
}catch (TransformerException e) {
e.printStackTrace()
}
}
}
- 添加节点元素
import org.w3c.dom.Document
import org.w3c.dom.Element
import org.w3c.dom.Node
import org.xml.sax.SAXException
import javax.xml.parsers.DocumentBuilder
import javax.xml.parsers.DocumentBuilderFactory
import javax.xml.parsers.ParserConfigurationException
import javax.xml.transform.Transformer
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.IOException
public class DOMTest03 {
public static void main(String[] args) {
//1.准备工作
//创建一个DocumentBuilderFactory对象
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance()
try {
//创建一个DocumentBuilder对象
DocumentBuilder db = dbf.newDocumentBuilder()
//通过DocumentBuilder对象的parse方法加载xml文件到项目
Document document = db.parse("src/main/java/test/books.xml")
//创建节点
Element addrEle = document.createElement("address")
//设置节点内容
addrEle.setTextContent("CHINA")
//获取添加节点的父节点
Node node = document.getElementsByTagName("book").item(0)
//添加节点
node.appendChild(addrEle)
//从内存写到文档同步操作
Transformer tf = TransformerFactory.newInstance().newTransformer()
tf.transform(new DOMSource(document),new StreamResult("src/main/java/test/books.xml"))
}catch (ParserConfigurationException e){
e.printStackTrace()
}catch (SAXException e){
e.printStackTrace()
}catch (IOException e){
e.printStackTrace()
}catch (TransformerException e){
e.printStackTrace()
}
}
}
- 删除节点元素
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.xml.sax.SAXException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
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.IOException;
public class DOMTest04 {
public static void main(String[] args) {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse("src/main/java/test/books.xml");
Node node = document.getElementsByTagName("author").item(0);
node.getParentNode().removeChild(node);
Transformer tf = TransformerFactory.newInstance().newTransformer();
tf.transform(new DOMSource(document),new StreamResult("src/main/java/test/books.xml"));
}catch (ParserConfigurationException e){
e.printStackTrace();
}catch (SAXException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}catch (TransformerException e){
e.printStackTrace();
}
}
}
- 添加元素属性
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse("src/main/java/test/books.xml");
Node node = document.getElementsByTagName("author").item(0);
Element ele = (Element) node;
ele.setAttribute("ID","001");
Transformer tf = TransformerFactory.newInstance().newTransformer();
tf.transform(new DOMSource(document),new StreamResult("src/main/java/test/books.xml"));
}catch (ParserConfigurationException e){
e.printStackTrace();
}catch (SAXException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}catch (TransformerException e){
e.printStackTrace();
}
- xml文件
<?xml version="1.0" encoding="UTF-8" standalone="no"?><bookstore>
<book id="1">
<name>冰与火之歌</name>
<year>2014</year>
<price>89</price>
</book>
<book id="2">
<name>安徒生童话</name>
<year>2004</year>
<price>77</price>
<language>English</language>
</book>
</bookstore>
- JAVA生成xml文件
//1.通过文档帮助器,创建一个文档对象
Document doc = DocumentHelper.createDocument()
//2.给文档对象(dom树)添加第一个节点(根节点)
Element books = doc.addElement("books")
//3.通过根节点,丰富子节点
// 创建100个book子节点,每个子节点又包含name和info两个子节点
for (int i = 0
Element book = books.addElement("book")
book.addAttribute("id",100+i+"")
Element name = book.addElement("name")
name.setText(i+"斗罗大陆")
Element info = book.addElement("info")
info.setText("每周更新第"+i+"集")
}
//4.将写好的xml文档写入到本地文件
//4.1.创建一个指向xml的文件输出流(即封装路径并创建文件)
FileOutputStream fos = new FileOutputStream("src/Book.xml")
//4.2.将文件输出流转成(装饰)xml输出流
XMLWriter xw = new XMLWriter(fos)
//4.3.写出文档
xw.write(doc)
//5.释放资源
xw.close()
System.out.println("执行完毕")
- dom4j解析
dom4j.github.io/
- SAX解析
www.cnblogs.com/Nyan-Workfl…