packagedemo;import org.w3c.dom.*;importorg.xml.sax.SAXException;importjavax.xml.parsers.DocumentBuilder;importjavax.xml.parsers.DocumentBuilderFactory;importjavax.xml.parsers.ParserConfigurationException;importjavax.xml.transform.Transformer;importjavax.xml.transform.TransformerFactory;importjavax.xml.transform.dom.DOMSource;importjavax.xml.transform.stream.StreamResult;importjava.io.IOException;public classAppDom {public static void main(String[] args) throwsException {
queryList();//insertTag();//updateTag();//deleteTag();
}public static void queryList() throwsParserConfigurationException, IOException, SAXException {//1、创建解析器工厂
DocumentBuilderFactory builderFactory =DocumentBuilderFactory.newInstance();//2、创建解析器
DocumentBuilder builder =builderFactory.newDocumentBuilder();//3、解析xml返回document
Document doc = builder.parse("./src/main/resources/persons.xml");//4、递归遍历
RecursiveNode(doc);
}private static voidRecursiveNode(Node node) {//判断是元素类型才打印
if (node.getNodeType()==Node.ELEMENT_NODE){
System.out.println(node.getNodeName());
}//得到当前节点的子节点集合
NodeList nodeList =node.getChildNodes();//遍历
for (int i= 0;i
RecursiveNode(nodeList.item(i));
}
}public static void insertTag() throwsException{//1、创建解析器工厂
DocumentBuilderFactory builderFactory =DocumentBuilderFactory.newInstance();//2、创建解析器
DocumentBuilder builder =builderFactory.newDocumentBuilder();//3、解析xml,返回document
Document doc = builder.parse("./src/main/resources/persons.xml");//4、得到第一个person标签
Node person = doc.getElementsByTagName("person").item(0);//5、创建sex标签 createElement
Element sex = doc.createElement("sex");//6、创建文本 createTextNode
Text text = doc.createTextNode("男");//7、把文本添加到sex标签下面 appendChild
sex.appendChild(text);//8、把sex标签添加到第一个person下面
person.appendChild(sex);//9、回写
TransformerFactory transformerFactory =TransformerFactory.newInstance();
Transformer transformer=transformerFactory.newTransformer();
transformer.transform(new DOMSource(doc),new StreamResult("./src/main/resources/persons.xml"));
}private static void updateTag() throwsException {//1、创建解析器工厂
DocumentBuilderFactory builderFactory =DocumentBuilderFactory.newInstance();//2、创建解析器
DocumentBuilder builder =builderFactory.newDocumentBuilder();//3、解析xml,返回document
Document doc = builder.parse("./src/main/resources/persons.xml");//4、得到第一个sex标签
Node sex = doc.getElementsByTagName("sex").item(0);//5、修改sex标签 setTextContext()
sex.setTextContent("女");//6、回写
TransformerFactory transformerFactory =TransformerFactory.newInstance();
Transformer transformer=transformerFactory.newTransformer();
transformer.transform(new DOMSource(doc),new StreamResult("./src/main/resources/persons.xml"));
}public static void deleteTag() throwsException {//1、创建解析器工厂
DocumentBuilderFactory builderFactory =DocumentBuilderFactory.newInstance();//2、创建解析器
DocumentBuilder builder =builderFactory.newDocumentBuilder();//3、解析xml,返回document
Document doc = builder.parse("./src/main/resources/persons.xml");//4、得到第一个sex标签
Node sex = doc.getElementsByTagName("sex").item(0);//5、获取sex的父节点
Node person =sex.getParentNode();//6、使用父节点删除 removeChild()
person.removeChild(sex);//7、回写
TransformerFactory transformerFactory =TransformerFactory.newInstance();
Transformer transformer=transformerFactory.newTransformer();
transformer.transform(new DOMSource(doc),new StreamResult("./src/main/resources/persons.xml"));
}
}