Dom解析xml文件的添加与删除方法

来源:互联网 发布:淘宝网安卓版 编辑:程序博客网 时间:2024/06/05 02:56

package xml3;

 

import java.io.File;

import java.io.IOException;

 

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.parsers.ParserConfigurationException;

import javax.xml.transform.Transformer;

import javax.xml.transform.TransformerConfigurationException;

import javax.xml.transform.TransformerException;

import javax.xml.transform.TransformerFactory;

import javax.xml.transform.TransformerFactoryConfigurationError;

import javax.xml.transform.dom.DOMSource;

import javax.xml.transform.stream.StreamResult;

 

import org.w3c.dom.*;

import org.xml.sax.SAXException;

/**

 * 获取Document对象

 * @author Administrator

 *

 */

public class DocumentDemo {

public Document getDocument(File file) throws SAXException, IOException, ParserConfigurationException{

return DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(file);

}

/**

 * 插入的方法

 */

public void insertElement() throws SAXException, IOException, ParserConfigurationException, TransformerFactoryConfigurationError, TransformerException{

// 获取document对象

Document document=getDocument(new File("rem.xml"));

// 创建节点

Element userElement=document.createElement("user");

// 创建节点

Element nameElement=document.createElement("name");

// 设置节点文本

nameElement.setTextContent("");

// 创建节点

Element passElement=document.createElement("pass");

//创建节点

Text passText=document.createTextNode("123");

// 把文本节点添加到passElement节点中

passElement.appendChild(passText);

// 创建属性节点

Attr idAttr=document.createAttribute("id");

idAttr.setValue("x001");

 

userElement.setAttribute("data","2013-10-10");

// 设置属性

userElement.setAttributeNode(idAttr);

// 把创建的name节点与pass节点添加到user节点中

userElement.appendChild(nameElement);

userElement.appendChild(passElement);

// 获取根节点

Element root=document.getDocumentElement();

// 添加到根节点末尾

root.appendChild(userElement);

// 主要是实现把更改的结果给写入到rem.xml文件中

Transformer transformer=TransformerFactory.newInstance().newTransformer();

transformer.transform(new DOMSource(document),new StreamResult(new File("rem.xml")));

}

/**

 * 删除的方法

 * @throws Exception

 */

public void deleteNode() throws Exception{

// 获取document对象

Document document=getDocument(new File("rem.xml"));

// 获取指定的节点

Element element=document.getElementById("x002");

// 首先获取父节点,然后再删除

Node node=element.getParentNode();

// 删除

node.removeChild(element);

// 主要是实现把更改的结果给写入到rem.xml文件中

Transformer transformer=TransformerFactory.newInstance().newTransformer();

transformer.transform(new DOMSource(document),new StreamResult(new File("rem.xml")));

}

public static void main(String[] args) throws Exception{

//new DocumentDemo().insertElement();

new DocumentDemo().deleteNode();

}

}

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!--必须加上这块代码才能执行删除-->

<!DOCTYPE users[

<!ELEMENT users (user+)>

<!ELEMENT user (name|pass|auto)*>

<!ELEMENT name (#PCDATA)>

<!ELEMENT pass (#PCDATA)>

<!ELEMENT auto  (#PCDATA)>

<!ATTLIST user date CDATA  #IMPLIED

id ID #IMPLIED>

]>

 

<users>

<user>

<name>345</name>

<pass>1234</pass>

<auto>true</auto>

</user>

 

<user date="2013-10-10" id="x001">

<name>

</name>

<pass>123</pass>

</user>

<user date="2013-10-10" id="x002">

<name>

</name>

<pass>123</pass>

</user>

<user date="2013-10-10" id="x003">

<name>

</name>

<pass>123</pass>

</user>

<user date="2013-10-10" id="x004">

<name></name>

<pass>123</pass>

</user>

</users>

0 0
原创粉丝点击