直接添代码:
XML文档名称(one.xml)
<?xml version="1.0" encoding="UTF-8" standalone="no"?><school> 北京大学 <student> 00012 <name>张三</name> <birthday name="mmmmmm">8月26日</birthday></student> </school>
相关Java代码
package Dom; import java.io.FileOutputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.junit.Test; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class Xml_DOM_resolver { @Test public void reading() throws Exception {//读 XML 文档 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();//定义工厂 API,使应用程序能够从 XML 文档获取生成 DOM 对象树的解析器。 DocumentBuilder documentBuilder = factory.newDocumentBuilder();//创建一个新的 DocumentBuilder 实例。 Document document = documentBuilder.parse("src/one.xml");//将给定文件的内容解析为一个 XML 文档,并且返回一个新的 DOM Document 对象。 NodeList list = document.getElementsByTagName("name");//获取指定元素名 Node node = list.item(0);//获取元素下的内容 String content = node.getTextContent(); System.out.println(content); } @Test public void reading1() throws Exception {//读 XML 文档 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();//定义工厂 API,使应用程序能够从 XML 文档获取生成 DOM 对象树的解析器。 DocumentBuilder documentBuilder = factory.newDocumentBuilder();//创建一个新的 DocumentBuilder 实例。 Document document = documentBuilder.parse("src/one.xml");//将给定文件的内容解析为一个 XML 文档,并且返回一个新的 DOM Document 对象。 //得到根节点 Node root = document.getElementsByTagName("school").item(0);//获取指定元素名 list(root); } private void list(Node node) { // TODO Auto-generated method stub if (node instanceof Element) {//判断当前的是不是元素(标签) System.out.println(node.getNodeName()); } NodeList list = node.getChildNodes();//获取当前XML的所有节点 for (int i = 0; i < list.getLength(); i++) { Node child = list.item(i); String childname = child.getNodeName();//获取当前节点的元素名称 list(child); } } @Test //得到xml标签中的属性值(name) public void reading2() throws Exception {//读 XML 文档 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();//定义工厂 API,使应用程序能够从 XML 文档获取生成 DOM 对象树的解析器。 DocumentBuilder documentBuilder = factory.newDocumentBuilder();//创建一个新的 DocumentBuilder 实例。 Document document = documentBuilder.parse("src/one.xml");//将给定文件的内容解析为一个 XML 文档,并且返回一个新的 DOM Document 对象。 //在知道是元素的时候可以实现强转 Element root = (Element) document.getElementsByTagName("student").item(0);//获取指定元素名 String nature = root.getAttribute("name"); System.out.println(nature); } @Test public void add() throws Exception {//对XML文档进行指定位置添加节点 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();//定义工厂 API,使应用程序能够从 XML 文档获取生成 DOM 对象树的解析器。 DocumentBuilder documentBuilder = factory.newDocumentBuilder();//创建一个新的 DocumentBuilder 实例。 Document document = documentBuilder.parse("src/one.xml");//将给定文件的内容解析为一个 XML 文档,并且返回一个新的 DOM Document 对象。 //创建节点 Element brith = document.createElement("birthday"); brith.setTextContent("八月二十五日"); brith.setAttribute("name", "mmmmmm"); //获取参考节点 Element birthnode = (Element) document.getElementsByTagName("birthday").item(0);//获取指定元素名 //把节点挂在student上 Element root = (Element) document.getElementsByTagName("student").item(0);//获取指定元素名 root.insertBefore(brith, birthnode); // root.appendChild(brith); //把更新后的内存数写回去 TransformerFactory trans = TransformerFactory.newInstance(); Transformer tr = trans.newTransformer(); tr.transform(new DOMSource(document), new StreamResult(new FileOutputStream("src/one.xml"))); } @Test public void delet() throws Exception {//对XML文档就行添加节点 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();//定义工厂 API,使应用程序能够从 XML 文档获取生成 DOM 对象树的解析器。 DocumentBuilder documentBuilder = factory.newDocumentBuilder();//创建一个新的 DocumentBuilder 实例。 Document document = documentBuilder.parse("src/one.xml");//将给定文件的内容解析为一个 XML 文档,并且返回一个新的 DOM Document 对象。 //得到要删除的节点 Element brith = (Element) document.getElementsByTagName("birthday").item(0);//获取指定元素名 //得到要删除元素的父节点 Element partent = (Element) document.getElementsByTagName("student").item(0);//获取指定元素名 // partent.removeChild(brith);//使用remove方法删除节点 //创建节点 Element sex = document.createElement("sex"); sex.setTextContent("男"); //使用替换方法,替换节点 partent.replaceChild(sex, brith); //把更新后的内存数写回去 TransformerFactory trans = TransformerFactory.newInstance(); Transformer tr = trans.newTransformer(); tr.transform(new DOMSource(document), new StreamResult(new FileOutputStream("src/one.xml"))); } @Test public void updata() throws Exception {//对XML文档就行添加节点 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();//定义工厂 API,使应用程序能够从 XML 文档获取生成 DOM 对象树的解析器。 DocumentBuilder documentBuilder = factory.newDocumentBuilder();//创建一个新的 DocumentBuilder 实例。 Document document = documentBuilder.parse("src/one.xml");//将给定文件的内容解析为一个 XML 文档,并且返回一个新的 DOM Document 对象。 //得到要更新数据的节点 Element brith = (Element) document.getElementsByTagName("birthday").item(0);//获取指定元素名 brith.setTextContent("8月26日");//设置要更新是数据 //把更新后的内存数写回去 TransformerFactory trans = TransformerFactory.newInstance(); Transformer tr = trans.newTransformer(); tr.transform(new DOMSource(document), new StreamResult(new FileOutputStream("src/one.xml"))); } }