1.查询节点
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class Select {
public static void main(String[] args) throws Exception {
// 创建解析器工厂
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
// 创建解析器
DocumentBuilder builder = builderFactory.newDocumentBuilder();
// 获取目标源文件
Document document = builder.parse("src\\person.xml");
// 得到name标签的集合
NodeList list = document.getElementsByTagName("name");
for (int i = 0; i < list.getLength(); i++) {
// 具体标签对象
Node name = list.item(i);
// 标签内的值
System.out.println(name.getTextContent());
}
}
}
2.增加节点操作
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.Text;
public class Add {
public static void main(String[] args) throws Exception {
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
// 创建解析器
DocumentBuilder builder = builderFactory.newDocumentBuilder();
Document document = builder.parse("src\\person.xml");
// 添加节点
Element p4 = document.createElement("p4");
Element name = document.createElement("name");
Text nameText = document.createTextNode("马云");
Element age = document.createElement("age");
Text ageText = document.createTextNode("30");
name.appendChild(nameText);
age.appendChild(ageText);
p4.appendChild(name);
p4.appendChild(age);
Node p = document.getElementsByTagName("person").item(0);
p.appendChild(p4);
// 我们的实际操作是在内存中实现的,为了让xml文件进行改变,使用以下回写方法
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.transform(new DOMSource(document), new StreamResult("src\\person.xml"));
}
}
3.删除节点操作
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class Delete {
public static void main(String[] args) throws Exception {
DocumentBuilderFactory dBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = dBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.parse("src//person.xml");
NodeList listPer = document.getElementsByTagName("person");
Node nodePer = listPer.item(0);
//获取p4节点
Node nodeP_4 = nodePer.getLastChild();
//删除子节p4
nodePer.removeChild(nodeP_4);
//将操作内容回写至文件
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.transform(new DOMSource(document), new StreamResult("src//person.xml"));
}
}
4.改变文本节点
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class Modify {
public static void main(String[] args) throws Exception {
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.parse("src//person.xml");
//获取age集合
NodeList nodeList = document.getElementsByTagName("age");
//获取第二个age节点
Node node = nodeList.item(1);
//获取age里的文本节点
Node textNode = node.getLastChild();
//设置文本节点内容
textNode.setTextContent("100");
//回写
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.transform(new DOMSource(document), new StreamResult("src//person.xml"));
}
}
5.遍历整个xml节点
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class Traverse {
public static void main(String[] args) throws Exception {
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.parse("src//person.xml");
list(document);
}
private static void list(Node nodeF) {
if (nodeF.getNodeType() == Node.ELEMENT_NODE) {
System.out.println(nodeF);
}
// TODO 自动生成的方法存根
NodeList nodeListF = nodeF.getChildNodes();
for (int i = 0; i < nodeListF.getLength(); i++) {
Node node = nodeListF.item(i);
// 直接打印节点会将回车以及空格都会打印出来,在前边做一个判断
// System.out.println(node);
list(node);
}
}
}