xml(3)
阅读原文时间:2023年07月08日阅读:1

xml的解析方式:dom解析和sax解析

DOM解析

使用jaxp进行增删改查

1.创建DocumentBuilderFactory工厂

2.通过DocumentBuilderFactory工厂创建DocumentBuilder

3.解析xml,得到Document对象

*在对document进行增删改查操作时,需要回写到xml中:

1.创建TransformerFactory回写工厂

2.通过回写工厂,获得Transformer

3.Transformer.transform(new DOMSource(document),new StreamResult(""))

private static void selectALL() throws Exception {
/**
*
* 1.创建DocumentFacTory工厂
* 2.通过Document Factory工厂得到DocumentBuilder
* 3.解析xml得到Document对象
*/

 //创建工厂  
 DocumentBuilderFactory documentBuilderFactory=DocumentBuilderFactory.newInstance();  
 //创建BUilder  
 DocumentBuilder documentBuilder=documentBuilderFactory.newDocumentBuilder();  
 //解析xml 获得document对象  
 Document document=documentBuilder.parse("src/com//zyf/test.xml");

 //获得所有name元素  
 NodeList list=document.getElementsByTagName("sex");  
 //遍历  
 for(int i=0;i<list.getLength();i++){  
     Node node1=list.item(i);  
     System.out.println(node1.getTextContent());  
 }  

}

public static void addSex() throws Exception{
//创建工厂
DocumentBuilderFactory documentBuilderFactory=DocumentBuilderFactory.newInstance();
//获得builder
DocumentBuilder documentBuilder=documentBuilderFactory.newDocumentBuilder();
//获得deocument
Document document=documentBuilder.parse("src/com/zyf/test.xml");
//创建节点nv
Node sex=document.createElement("sex");
//在sex中创建文本
Node text=document.createTextNode("nv");
// sex.setTextContent("nv");
sex.appendChild(text);
//得到sex的父节点
NodeList list=document.getElementsByTagName("p1");
Node node1=list.item(0);
//添加进父节点p1
node1.appendChild(sex);

//回写  
TransformerFactory transformerFactory=TransformerFactory.newInstance();  
Transformer transformer=transformerFactory.newTransformer();  
transformer.transform(new DOMSource(document),new StreamResult("src/com/zyf/test.xml"));  

}

public static void removeSex()throws Exception{
//创建工厂
DocumentBuilderFactory documentBuilderFactory=DocumentBuilderFactory.newInstance();
//闯将builder
DocumentBuilder documentBuilder=documentBuilderFactory.newDocumentBuilder();
//获得document
Document document=documentBuilder.parse("src/com/zyf/test.xml");
//获得sex的父节点
//获得sex
NodeList list=document.getElementsByTagName("sex");
Node node1=list.item(0);
//获得sex的父节点
Node parent=node1.getParentNode();
//remove
parent.removeChild(node1);
//回写
//回写工厂
TransformerFactory transformerFactory=TransformerFactory.newInstance();
Transformer transformer=transformerFactory.newTransformer();
transformer.transform(new DOMSource(document), new StreamResult("src/com/zyf/test.xml"));
}[Document是Node的子类]

xml的sax解析方式