对于DOM可以说已经不算陌生,DOM (Document Object Model,文档对象模型)定义访问和操作文档的一套标准方法。XML DOM和HTML DOM原理是一样的,所以我将不过多的介绍DOM的内容。其实DOM的宗旨就是所有的内容都是节点,这是我个人的理解。
什么是JAXP呢?JAXP是Java API for XML Processing的英文字头缩写,中文含义是:用于XML文档处理的使用Java语言编写的编程接口。JAXP支持DOM、SAX、XSLT等标准。
以下将介绍JAXP DOM的常见操作:
一、对DOM操作必须的
⒈创建解释器工厂DocumentBuilderFactory,使用newInstance() 创建一个新的实例。
⒉根据解释器工厂创建解释器DocumentBuilder,使用工厂实例的newDocumentBuilder() 方法创建解释器。
⒊得到Document对象,通过解释器的parse(File f) 方法,得到XML文件的Document。
Java语言:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse(new File("src/stu.xml"));
二、读取XML文件下的元素
【壹】读取XML文件下某个标签的内容
⒈取得Docment对象。
⒉得到标签对应的节点对象(元素对象)document.getElementByTagName(“节点名称”).item(“第几个节点”)。
⒊读取节点对象的内容element.getTextContent();
Java语言:
Element e=document.getDocumentElement();
Element name=(Element) e.getElementsByTagName("名字").item(1);
String text = name.getTextContent();
【贰】读取XML文件下某个标签的属性
⒈取得Docment对象。
⒉得到标签对应的节点对象(元素对象)document.getElementByTagName(“节点名称”).item(“第几个节点”)。
⒊读取节点对象的内容element.getAttribute();
Java语言:
Element e=document.getDocumentElement();
Element name=(Element) e.getElementsByTagName("名字").item(1);
String Attribute = name.getAttribute("属性名称");
三、使用JAXP DOM对XML进行添加操作
【壹】添加标签
⒈取得Docment对象。
⒉创建节点元素document.createElement(“标签名”)
⒊添加标签document.appendChild(“创建的标签”)
⒋更新被更改的节点输入到外部文件
*(1)得到转换器工厂TransformerFactory,使用TransformerFactory.newInstance()。
*(2)得到转换器Transformer,使用转换器工厂的newTransformer()方法。
*(3)转换器转换transform(new DOMSource(document),new StreamResult(new File(“src/xxx.xml”)))。
Java语言:
Element stu=document.createElement("学生");
Element name=document.createElement("名字");
name.setTextContent("贾宝玉");
stu.appendChild(name);
//把stu 挂到 根元素下
document.getDocumentElement().appendChild(stu);
//更新文档
//1.得打TransformerFactory
TransformerFactory tff=TransformerFactory.newInstance();
//2.得到一个转化器
Transformer tf=tff.newTransformer();
//3.转化
tf.transform(new DOMSource(document), new StreamResult(new File("src/myClass.xml")));
【贰】标签添加属性
⒈取得Docment对象。
⒉得到标签对应的节点对象(元素对象)document.getElementByTagName(“节点名称”).item(“第几个节点”)。
⒊设置节点对象的属性setAttribute(“sex”, “男”)。
⒋更新被更改的节点输入到外部文件
Java语言:
//得到第三个学生的节点对象
Element e=(Element) doc.getElementsByTagName("学生").item(2);
e.setAttribute("sex", "男");//添加属性
//这是添加属性的第二种方法.
Attr att=doc.createAttribute("sex2");
att.setTextContent("女");
e.setAttributeNode(att);
//更新
TransformerFactory tff=TransformerFactory.newInstance();
Transformer tf=tff.newTransformer();
tf.transform(new DOMSource(doc), new StreamResult(new File("src/myClass.xml")));
三、使用JAXP DOM对XML进行删除操作
【壹】删除标签
⒈取得Docment对象。
⒉得到要删除标签对应的节点对象(元素对象)document.getElementByTagName(“节点名称”).item(“第几个节点”)。
⒊通过父节点删除标签e.getParentNode().removeChild(e)。
⒋更新被更改的节点输入到外部文件。
Java语言:
//得到第三个学生的节点对象
Element e=(Element) doc.getElementsByTagName("学生").item(2);
doc.getDocumentElement().removeChild(e);
//我们在删除某个节点的时候,可以通过 得打其父节点,然后将其删除.
e.getParentNode().removeChild(e);
TransformerFactory tff=TransformerFactory.newInstance();
Transformer tf=tff.newTransformer();
tf.transform(new DOMSource(doc), new StreamResult(new File("src/myClass.xml")));
【贰】删除标签属性
⒈取得Docment对象。
⒉得到要删除标签对应的节点对象(元素对象)document.getElementByTagName(“节点名称”).item(“第几个节点”)。
⒊删除标签属性e.removeAttribute(“属性名”);
⒋更新被更改的节点输入到外部文件