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>