JAVA解析XML文件的三种解析方法.doc_第1页
JAVA解析XML文件的三种解析方法.doc_第2页
JAVA解析XML文件的三种解析方法.doc_第3页
JAVA解析XML文件的三种解析方法.doc_第4页
JAVA解析XML文件的三种解析方法.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

创建解析XML文件的三种解析方法1、 第一种用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;public class w3c public static void main(String args) throws ExceptioncreateXml();/创建XML文档并创建节点public static void 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);/声明参数IDString 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(nameListnew Random().nextInt(nameList.length);sex.setTextContent(sexListnew 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文档public static void 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();2、 第二种用jdom解析package jdom;import java.io.FileOutputStream;import java.util.Iterator;import java.util.List;import java.util.Random;import org.jdom.Document;import org.jdom.Element;import org.jdom.input.SAXBuilder;import org.jdom.output.Format;import org.jdom.output.XMLOutputter;public class jdom private static String xmlpath = jdom.xml;public static void main(String args) throws Exception/resolving();createXml();/创建XML文件并添加节点public static void createXml() throws Exception/创建document对象Document document = new Document();/创建根节点Element root = new Element(students);/将根节点添加到document对象中document.addContent(root);for(int i = 0 ;i 20 ; i+)/创建根元素节点Element student = new Element(student);/声明参数IDString id =;/循环生成一个9为的随机ID数for(int j = 0; j 9 ; j + )id += new Random().nextInt(8)+1;/设置跟元素节点的属性student.setAttribute(id,id);/将根元素节点添加到根节点中root.addContent(student);/声明一个姓名的数组String nameList = 吕布,赵云,马超,张飞,关羽,许褚,孙策,周瑜,夏侯渊,张颌,于禁,黄忠,典韦,曹仁,程普;String sexList = 男,女;/创建元素节点Element name = new Element(name);Element sex = new Element(sex);Element age =new Element(age);Element phone = new Element(phone);/设置根元素节点的文本值name.setText(nameListnew Random().nextInt(nameList.length);sex.setText(sexListnew Random().nextInt(sexList.length);age.setText(new Random().nextInt(20)+20+);String tel =;for(int k = 0; k 7 ; k+ )tel += new Random().nextInt(9);phone.setText(0756-+tel);/将元素节点添加到根元素节点中student.addContent(name);student.addContent(sex);student.addContent(age);student.addContent(phone);/设置XML输出排版Format format = Format.getPrettyFormat();XMLOutputter out = new XMLOutputter(format);/输出XML文件out.output(document, new FileOutputStream(xmlpath);/解析XML文档SuppressWarnings(rawtypes)public static void resolving() throws Exception/获取XML解析器SAXBuilder builder = new SAXBuilder();/获取document对象Document doucment = builder.build(xmlpath);/获取根节点Element students = doucment.getRootElement();/获取根元素节点List studentList = students.getChildren(student);/循环获取元素文本值,第一种方法for(int i = 0 ; i studentList.size() ; i+ )Element student = (Element)studentList.get(i);System.out.println(id = +student.getAttributeValue(id)+ name = +student.getChildText(name)+ sex = +student.getChildText(sex)+ age = +student.getChildText(age)+ phone = +student.getChildText(phone);System.err.println(n-);/循环获取元素文本值,第二种方法for(Iterator iter=studentList.iterator();iter.hasNext();)Element student = (Element)iter.next();System.out.println(id = +student.getAttributeValue(id)+ name = +student.getChildText(name)+ sex = +student.getChildText(sex)+ age = +student.getChildText(age)+ phone = +student.getChildText(phone);3、 第三种用dom4j解析package dom4j;import java.io.File;import java.io.FileWriter;import java.util.Iterator;import java.util.List;import java.util.Random;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;public class dom4j private static String xmlpath = dom4j.xml;public static void main(String args)throws Exception/createXml();resolving();public static void createXml() throws Exception/创建document对象Document document = DocumentHelper.createDocument();/创建根节点Element root = DocumentHelper.createElement(studnets);/将根节点添加到document对象中document.setRootElement(root);for(int i = 0 ;i 20 ; i+)/创建根元素节点并将根元素节点添加到根节点中Element student = root.addElement(student);/设置根元素节点的值/声明参数IDString id =;/循环生成一个9为的随机ID数for(int j = 0; j 9 ; j + )id += new Random().nextInt(8)+1;student.addAttribute(id,id);/创建元素节点并将元素节点添加到根元素节点中Element name = student.addElement(name);Element sex = student.addElement(sex);Element age = student.addElement(age);Element phone = student.addElement(phone);/声明一个姓名的数组String nameList = 吕布,赵云,马超,张飞,关羽,许褚,孙策,周瑜,夏侯渊,张颌,于禁,黄忠,典韦,曹仁,程普;String sexList = 男,女;/设置元素节点的文本值name.setText(nameListnew Random().nextInt(nameList.length);sex.setText(sexListnew Random().nextInt(sexList.length);age.setText(new Random().nextInt(20)+20+);String tel =;for(int k = 0; k 7 ; k+ )tel += new Random().nextInt(9);phone.setText(0756-+tel);/设置XML文件输出的格式OutputFormat format = new OutputFormat(t, true);format.setEncoding(utf-8);XMLWriter xmlWriter = new XMLWriter(new FileWriter(xmlpath), format);/输出XML文件xmlWriter.write(document);xmlWriter.close();/解析XML文件SuppressWarnings(rawtypes)public static void resolving() throws

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论