一:获得文档对象
//1、获得工厂实例
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//2、使用工厂生成解析器
DocumentBuilder builder = factory.newDocumentBuilder();
//3、通过解析器解析指定文件获得文档对象document
File xml = new File("./src/xxx.xml");
Document document = builder.parse(xml);
二:查询和遍历节点
//1、getElementsByTagName("shouting");获得NodeList集合
NodeList tags = document.getElementsByTagName("shouting");
//2、遍历
for(int i=0;i<tags.getLength();i++){
Node node = tags.item(i);
String textContent = node.getTextContent();
System.out.println(textContent);
}
三:创建元素并添加对应节点
//1、创建标签<shouting></shouting>
Element shoutingTag = document.createElement("shouting");
//2、创建文本或者子元素节点
Text text = document.createTextNode("Hello World!getDocumentElement()");
//3、将文本加入到标签内 <shouting>Hello World!</shouting>
shoutingTag.appendChild(text);
//4、获得根节点的两种方式
//Node root = document.getFirstChild();
Element root = document.getDocumentElement();
//5、将新节点添加想添加的节点下
root.appendChild(shoutingTag);
到此 文档对象写入已经完成,目前改变后的文档对象还保存在内存中 需要回写到文件中(增删改都要进行回写)
三:删除节点
//1、getElementsByTagName("shouting");获得NodeList集合
NodeList tags = document.getElementsByTagName("shouting");
//2、删除操作
//假定删除最后一个节点
Node lastTag = tags.item(tags.getLength()-1);
//获得要删除节点的父节点
Node parentNode = lastTag.getParentNode();
//在父节点上进行删除操作 并且返回删除的节点
Node oldNode = parentNode.removeChild(lastTag);
注意要回写文档
四:修改操作和修改或添加属性
//1、getElementsByTagName("shouting");获得NodeList集合
NodeList tags = document.getElementsByTagName("shouting");
//2、对节点进行修改操作
Node lastTag = tags.item(tags.getLength()-1);
//修改文本内容
lastTag.setTextContent("进行修改");
//修改属性 (Element类上操作)
Element n = (Element)lastTag;
n.setAttribute("src", "sssssshting");
注意要回写文档
五:回写document
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer tf = tFactory.newTransformer();
tf.transform(new DOMSource(document), new StreamResult("src/xxx.xml"));