用w3c解析
package w3c;
import java.io.File;
import java.io.FileOutputStream;
import java.util.Random;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
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.NodeList;
publicclass w3c {
publicstaticvoid main(String[] args) throws Exception{
createXml();
}
//創建XML文檔並創建節點
publicstaticvoid createXml() throws Exception{
//獲取XML解析器工廠類
DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();
//獲取XML解析器
DocumentBuilder db = dbf.newDocumentBuilder();
//獲取操作的document對象
Document document = db.newDocument();
//設置XML文件的版本
document.setXmlVersion("1.0");
//創建根節點
Element root = document.createElement("students");
//將根節點添加到document對象中
document.appendChild(root);
//聲明一個姓名的數組
String nameList[] = {"呂布","趙雲","馬超","張飛","關羽","許褚","孫策","周瑜","夏侯淵","張頜","于禁","黃忠","典韋","曹仁","程普"};
String sexList[] = {"男","女"};
//循環添加數據
for(int i = 0 ;i < 20 ; i++){
//創建根元素節點
Element rootelement = document.createElement("student");
//聲明參數ID
String id ="";
//循環生成一個9爲的隨機ID數
for(int j = 0; j< 9 ; j ++ ){
id += new Random().nextInt(8)+1;
}
//設置根元素節點的屬性
rootelement.setAttribute("id",id);
//將根元素節點添加到根節點中
root.appendChild(rootelement);
//設置元素節點
Element name = document.createElement("name");
Element sex = document.createElement("sex");
Element age = document.createElement("age");
Element phone = document.createElement("phone");
//給元素節點賦值
name.setTextContent(nameList[new Random().nextInt(nameList.length)]);
sex.setTextContent(sexList[new Random().nextInt(sexList.length)]);
age.setTextContent(new Random().nextInt(20)+20+"");
String tel ="";
for(int k = 0; k< 7 ; k++ ){
tel += new Random().nextInt(9);
}
phone.setTextContent("0756-"+tel);
//將元素節點添加到根元素節點中
rootelement.appendChild(name);
rootelement.appendChild(sex);
rootelement.appendChild(age);
rootelement.appendChild(phone);
}
//開始把Document映射到文件
TransformerFactory transFactory = TransformerFactory.newInstance();
Transformer transFormer = transFactory.newTransformer();
//生成的XML文件
File file = new File("w3c.xml");
//判斷XML文件存不存在,如果不存在則創建
if(file.exists()){
file.createNewFile();
}
//設置是否添加空格
transFormer.setOutputProperty(OutputKeys.INDENT, "yes");
//設置輸出文件的格式
transFormer.setOutputProperty(OutputKeys.ENCODING, "utf-8");
//輸出XML文件
transFormer.transform(new DOMSource(document), new StreamResult(new FileOutputStream(file)));
//輸出XML文件的路徑
System.out.println(file.getAbsolutePath());
}
//解析XML文檔
publicstaticvoid resolving() throws Exception{
//獲取XML解析器工廠類
DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();
//獲取XML解析器
DocumentBuilder db = dbf.newDocumentBuilder();
//獲取操作的document對象
Document document = db.parse(new File("w3c.xml"));
//獲取XML文件的根元素節點
NodeList root = document.getElementsByTagName("student");
//循環根元素節點信息
for(int i = 0 ; i < root.getLength() ;i++){
Element student = (Element)root.item(i);
System.err.println("id = "+student.getAttribute("id")+" name = "
+student.getElementsByTagName("name").item(0).getTextContent()+" sex = "
+student.getElementsByTagName("sex").item(0).getTextContent()+" age = "
+student.getElementsByTagName("age").item(0).getTextContent()+" phone = "
+student.getElementsByTagName("phone").item(0).getTextContent());
}
}
}