创建解析XML文件的三种解析方法(一)

前端之家收集整理的这篇文章主要介绍了创建解析XML文件的三种解析方法(一)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

用w3c解析@H_403_3@

package w3c;@H_403_3@

import java.io.File;@H_403_3@

import java.io.FileOutputStream;@H_403_3@

import java.util.Random;@H_403_3@

@H_403_3@

import javax.xml.parsers.DocumentBuilder;@H_403_3@

import javax.xml.parsers.DocumentBuilderFactory;@H_403_3@

import javax.xml.transform.OutputKeys;@H_403_3@

import javax.xml.transform.Transformer;@H_403_3@

import javax.xml.transform.TransformerFactory;@H_403_3@

import javax.xml.transform.dom.DOMSource;@H_403_3@

import javax.xml.transform.stream.StreamResult;@H_403_3@

@H_403_3@

import org.w3c.dom.Document;@H_403_3@

import org.w3c.dom.Element;@H_403_3@

import org.w3c.dom.NodeList;@H_403_3@

@H_403_3@

@H_403_3@

publicclass w3c {@H_403_3@

publicstaticvoid main(String[] args) throws Exception{@H_403_3@

createXml();@H_403_3@

}@H_403_3@

@H_403_3@

//创建XML文档并创建节点@H_403_3@

publicstaticvoid createXml() throws Exception{@H_403_3@

//获取XML解析器工厂类@H_403_3@

DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();@H_403_3@

//获取XML解析器@H_403_3@

DocumentBuilder db = dbf.newDocumentBuilder();@H_403_3@

//获取操作的document对象@H_403_3@

Document document = db.newDocument();@H_403_3@

//设置XML文件的版本@H_403_3@

document.setXmlVersion("1.0");@H_403_3@

//创建根节点@H_403_3@

Element root = document.createElement("students");@H_403_3@

//将根节点添加document对象中@H_403_3@

document.appendChild(root);@H_403_3@

//声明一个姓名的数组@H_403_3@

String nameList[] = {"吕布","赵云","马超","张飞","关羽","许褚","孙策","周瑜","夏侯渊","张颌","于禁","黄忠","典韦","曹仁","程普"}; @H_403_3@

String sexList[] = {"",""};@H_403_3@

//循环添加数据@H_403_3@

for(int i = 0 ;i < 20 ; i++){@H_403_3@

//创建根元素节点@H_403_3@

Element rootelement = document.createElement("student");@H_403_3@

//声明参数ID@H_403_3@

String id ="";@H_403_3@

//循环生成一个9为的随机ID@H_403_3@

for(int j = 0; j< 9 ; j ++ ){@H_403_3@

id += new Random().nextInt(8)+1;@H_403_3@

}@H_403_3@

//设置根元素节点的属性@H_403_3@

rootelement.setAttribute("id",id);@H_403_3@

//将根元素节点添加到根节点中@H_403_3@

root.appendChild(rootelement);@H_403_3@

//设置元素节点@H_403_3@

Element name = document.createElement("name");@H_403_3@

Element sex = document.createElement("sex");@H_403_3@

Element age = document.createElement("age");@H_403_3@

Element phone = document.createElement("phone");@H_403_3@

//给元素节点赋值@H_403_3@

name.setTextContent(nameList[new Random().nextInt(nameList.length)]);@H_403_3@

sex.setTextContent(sexList[new Random().nextInt(sexList.length)]);@H_403_3@

age.setTextContent(new Random().nextInt(20)+20+"");@H_403_3@

String tel ="";@H_403_3@

for(int k = 0; k< 7 ; k++ ){@H_403_3@

tel += new Random().nextInt(9);@H_403_3@

}@H_403_3@

phone.setTextContent("0756-"+tel);@H_403_3@

//将元素节点添加到根元素节点中@H_403_3@

rootelement.appendChild(name);@H_403_3@

rootelement.appendChild(sex);@H_403_3@

rootelement.appendChild(age);@H_403_3@

rootelement.appendChild(phone);@H_403_3@

}@H_403_3@

//开始把Document映射到文件@H_403_3@

TransformerFactory transFactory = TransformerFactory.newInstance();@H_403_3@

Transformer transFormer = transFactory.newTransformer();@H_403_3@

//生成XML文件@H_403_3@

File file = new File("w3c.xml");@H_403_3@

//判断XML文件存不存在,如果不存在则创建@H_403_3@

if(file.exists()){@H_403_3@

file.createNewFile();@H_403_3@

}@H_403_3@

//设置是否添加空格@H_403_3@

transFormer.setOutputProperty(OutputKeys.INDENT,"yes");@H_403_3@

//设置输出文件的格式@H_403_3@

transFormer.setOutputProperty(OutputKeys.ENCODING,"utf-8");@H_403_3@

//输出XML文件@H_403_3@

transFormer.transform(new DOMSource(document),new StreamResult(new FileOutputStream(file)));@H_403_3@

//输出XML文件的路径@H_403_3@

System.out.println(file.getAbsolutePath());@H_403_3@

}@H_403_3@

//解析XML文档@H_403_3@

publicstaticvoid resolving() throws Exception{@H_403_3@

//获取XML解析器工厂类@H_403_3@

DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();@H_403_3@

//获取XML解析器@H_403_3@

DocumentBuilder db = dbf.newDocumentBuilder();@H_403_3@

//获取操作的document对象@H_403_3@

Document document = db.parse(new File("w3c.xml"));@H_403_3@

//获取XML文件的根元素节点@H_403_3@

NodeList root = document.getElementsByTagName("student");@H_403_3@

//循环根元素节点信息@H_403_3@

for(int i = 0 ; i < root.getLength() ;i++){@H_403_3@

Element student = (Element)root.item(i);@H_403_3@

System.err.println("id = "+student.getAttribute("id")+" name = "@H_403_3@

+student.getElementsByTagName("name").item(0).getTextContent()+" sex = "@H_403_3@

+student.getElementsByTagName("sex").item(0).getTextContent()+" age = "@H_403_3@

+student.getElementsByTagName("age").item(0).getTextContent()+" phone = "@H_403_3@

+student.getElementsByTagName("phone").item(0).getTextContent());@H_403_3@

}@H_403_3@

}@H_403_3@

}@H_403_3@

猜你在找的XML相关文章