对于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(“属性名”);

⒋更新被更改的节点输入到外部文件