Assumed that we have an XML document named student. Now we will have some operation.Including add,drop and select.
xmlDemo.java
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class xmlDemo {
/**
* @param args
* @throws ParserConfigurationException
* @throws IOException
* @throws SAXException
* @throws TransformerException
*/
public static void main(String[] args) throws ParserConfigurationException,
SAXException, IOException, TransformerException {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
// Gets the document object.
Document document = builder.parse(new File("student.xml"));
while (true) {
System.out.println("请输入数字:1(第一题),2,3,4");
Scanner s = new Scanner(System.in);
switch (s.nextInt()) {
case 1:// 1.Deletes students Lin Qingxia.
deleteElement(document);
break;
case 2: // 2.Adds students angelbaby
addElement(document);
break;
case 3: // 3.Outputs the sex value of Huang Xiaoming.
getH(document);
break;
case 4: // 4.Outputs the introduction of Zhou Xingchi.
getZ(document);
break;
default:
System.out.println("有误 ,重输");
}
}
}
/**
* Deletes element from the specified file.
*
* @param document
* @throws TransformerException
*/
private static void deleteElement(Document document)
throws TransformerException {
int length = document.getElementsByTagName("名字").getLength();
int j = 0;
for (int i = 0; i < length; i++, j++) {
Element e = (Element) document.getElementsByTagName("名字").item(j);
if (e.getTextContent().equals("林青霞")) {
e.getParentNode().getParentNode()
.removeChild(e.getParentNode());
j--;
}
}
TransformerFactory fac = TransformerFactory.newInstance();
Transformer tf = fac.newTransformer();
tf.transform(new DOMSource(document), new StreamResult("student.xml"));
}
private static void addElement(Document document)
throws TransformerException {
Element e = document.createElement("学生");
Element e1 = document.createElement("姓名");
Element e2 = document.createElement("年龄");
Element e3 = document.createElement("介绍");
document.getElementsByTagName("班级").item(0).appendChild(e);
e1.setTextContent("angelbaby");
e2.setTextContent("22");
e3.setTextContent("热情爱生活");
e.appendChild(e1);
e.appendChild(e2);
e.appendChild(e3);
TransformerFactory fac = TransformerFactory.newInstance();
Transformer tf = fac.newTransformer();
tf.transform(new DOMSource(document), new StreamResult("student.xml"));
}
private static void getH(Document document) {
for (int i = 0; i < document.getElementsByTagName("名字").getLength(); i++) {
Element n = (Element) document.getElementsByTagName("名字").item(i);
if (n.getTextContent().equals("黄晓明")) {
Node node = n.getParentNode().getAttributes()
.getNamedItem("sex");
System.out.println(node.getNodeValue());
return;
}
}
}
private static void getZ(Document document) {
for (int i = 0; i < document.getElementsByTagName("名字").getLength(); i++) {
Node node;
if ((node = document.getElementsByTagName("名字").item(i))
.getTextContent().equals("周星驰")) {
NodeList list = node.getParentNode().getChildNodes();
for (int k = 0; k < list.getLength(); k++) {
Node n = list.item(k);
if (n.getNodeName().equals("介绍")) {
System.out.println(n.getTextContent());
}
}
}
}
}
}
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<班级>
<学生 id="a01" sex="man">
<名字>周星驰</名字>
<年龄>23</年龄>
<介绍>学习刻苦</介绍>
</学生>
<学生 id="a02">
<名字>林青霞</名字>
<年龄>32</年龄>
<介绍>是一个好学生</介绍>
</学生>
<学生 id="004" sex="man">
<名字>黄晓明</名字>
<介绍>刻苦学习</介绍>
<年龄>30</年龄>
</学生>
</班级>