domcument解析
public class DomDemo implements XmlDocument {
//文档树
private Document document;
//文件路径
private String fileName;
/*
* 该初始化方法用来获得解析器
*/
public void init() {
try {
//先得到解析器工厂的实例
DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
//取得到解析器
DocumentBuilder builder = factory.newDocumentBuilder();
//通过解析器来得到一个文档对象
this.document = builder.newDocument();
} catch (ParserConfigurationException e) {
System.out.println(e.getMessage());
}
}
@Override
public void createXml(String fileName) {
//创建根节点
Element root = this.document.createElement("employees");
//把根节点加到文档树上去
this.document.appendChild(root);
//创建了一个<employee>节点
Element employee = this.document.createElement("employee");
//创建name节点
Element name = this.document.createElement("name");
//给name节点里面里面添加文本节点
name.appendChild(this.document.createTextNode("丁宏亮"));
//将name节点加到employee节点中去
employee.appendChild(name);
Element sex = this.document.createElement("sex");
sex.appendChild(this.document.createTextNode("m"));
employee.appendChild(sex);
Element age = this.document.createElement("age");
age.appendChild(this.document.createTextNode("30"));
employee.appendChild(age);
//将创建好的employ节点加到跟节点里面去
root.appendChild(employee);
//得到TransformerFactory工厂
TransformerFactory tf = TransformerFactory.newInstance();
try {
//通过TransformerFactory工厂得到Transformer对象
Transformer transformer = tf.newTransformer();
//将documengt对象转换成dom源
DOMSource source = new DOMSource(document);
transformer.setOutputProperty(OutputKeys.ENCODING, "gb2312");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
PrintWriter pw = new PrintWriter(new FileOutputStream(fileName));
StreamResult result = new StreamResult(pw);
StreamResult consol=new StreamResult(System.out);
transformer.transform(source, result);
transformer.transform(source, consol);
System.out.println("生成XML文件成功!");
} catch (TransformerConfigurationException e) {
System.out.println(e.getMessage());
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
} catch (FileNotFoundException e) {
System.out.println(e.getMessage());
} catch (TransformerException e) {
System.out.println(e.getMessage());
}
}
@Override
public void parserXml(String fileName) {
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse(fileName);
NodeList employees = document.getChildNodes();
for (int i = 0; i < employees.getLength(); i++) {
Node employee = employees.item(i);
NodeList employeeInfo = employee.getChildNodes();
for (int j = 0; j < employeeInfo.getLength(); j++) {
Node node = employeeInfo.item(j);
NodeList employeeMeta = node.getChildNodes();
for (int k = 0; k < employeeMeta.getLength(); k++) {
System.out.println(employeeMeta.item(k).getNodeName()
+ ":" + employeeMeta.item(k).getTextContent());
}
}
}
System.out.println("解析完毕");
} catch (FileNotFoundException e) {
System.out.println(e.getMessage());
} catch (ParserConfigurationException e) {
System.out.println(e.getMessage());
} catch (SAXException e) {
System.out.println(e.getMessage());
} catch (IOException e) {
System.out.println(e.getMessage());
}
}