生成XML 解析

1. 

 2.

  

 3.

4.使用Java默认的dom生成方式

 Student类 

package test;

public class Student {
	private int stuid;
	private String stuname;
	private int stuage;
	private String stuaddress;
	public int getStuid() {
		return stuid;
	}
	public void setStuid(int stuid) {
		this.stuid = stuid;
	}
	public String getStuname() {
		return stuname;
	}
	public void setStuname(String stuname) {
		this.stuname = stuname;
	}
	public int getStuage() {
		return stuage;
	}
	public void setStuage(int stuage) {
		this.stuage = stuage;
	}
	public String getStuaddress() {
		return stuaddress;
	}
	public void setStuaddress(String stuaddress) {
		this.stuaddress = stuaddress;
	}
	

}

 XMLHelper类

package test;

import java.io.File;
import java.util.List;

import javax.lang.model.element.Element;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
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;


/**
 * @author 猪八戒
 * Java默认的dom方式(jdk提供的Java类)
 *
 */
public class XMLHelper {

	public static void createXML1(List<Student> studentList) throws Exception {
		//得到DOM解析器工厂
		DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
		//创建DocumentBuilder对象
		DocumentBuilder documentBuilder=factory.newDocumentBuilder();
		//创建Document对象
		org.w3c.dom.Document document=documentBuilder.newDocument();
		//设置文档对象的文件头
		document.setXmlStandalone(true);
		//创建根元素
		org.w3c.dom.Element rooElement=document.createElement("studentlist");
		//遍历集合
		for(Student student:studentList) {
			//创建子元素
			org.w3c.dom.Element studentElement= document.createElement("student");
			//为子元素设置属性
			studentElement.setAttribute("stuid", String.valueOf(student.getStuid()));
			//创建子子元素
			org.w3c.dom.Element stunameElement=document.createElement("stuname");
			//为子子元素设置具体参数值
			stunameElement.setTextContent(student.getStuname());
			//创建子子元素
			org.w3c.dom.Element stuageElement=document.createElement("stuage");
			//为子子元素设置具体参数值
			stuageElement.setTextContent(String.valueOf(student.getStuage()));
			//创建子子元素
			org.w3c.dom.Element stuaddressElement=document.createElement("stuaddress");
			//为子子元素设置具体参数值
			stuaddressElement.setTextContent(student.getStuaddress());
			//将子子元素添加到子元素中
			studentElement.appendChild(stunameElement);
			studentElement.appendChild(stuageElement);
			studentElement.appendChild(stuaddressElement);
			//将子元素添加到根元素中
			rooElement.appendChild(studentElement);
		}
		//将根元素添加到Document对象中
		document.appendChild(rooElement);
		//将document对象写出到文件中
		File file=new File("src//test//student.xml");
		//创建TransformerFactory
		TransformerFactory tff= TransformerFactory.newInstance();
		//创建Transformer对象
		Transformer tf=tff.newTransformer();
		//输出内容是否使用换行
		tf.setOutputProperty(OutputKeys.INDENT, "yes");
		//创建xml文件并写入内容
		tf.transform(new DOMSource(document), new StreamResult(file));
		
	}

}

Main类

package test;

import java.util.ArrayList;
import java.util.List;

public class Main {
	public static void main(String[] args) throws Exception {
		Student student1=new Student();
		student1.setStuid(1001);
		student1.setStuname("zhangsan");
		student1.setStuage(23);
		student1.setStuaddress("西安");
		
		Student student2=new Student();
		student2.setStuid(1002);
		student2.setStuname("lisi");
		student2.setStuage(24);
		student2.setStuaddress("北京");
		
		Student student3=new Student();
		student3.setStuid(1003);
		student3.setStuname("wangwu");
		student3.setStuage(24);
		student3.setStuaddress("湖北");
		
		List<Student> studentList=new ArrayList<>();
		studentList.add(student1);
		studentList.add(student2);
		studentList.add(student3);

		XMLHelper.createXML1(studentList);
	}

}

5.下载jdom,dom4j,SAX

DOM:在现在的Java JDK里都自带了,在xml-apis.jar包里

SAX:http://sourceforge.net/projects/sax/

jdom:http://jdom.org/downloads/index.html

dom4j:http://sourceforge.net/projects/dom4j/

6.使用第三方包dom4j

package test;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

import java.io.File;
import java.io.FileOutputStream;
import java.util.List;

/**
 * @author 猪八戒
 * 使用第三方包dom4j
 *
 */
public class XMLHelper {
	public static void createXML2(List<Student> studentList)throws Exception {
		//创建Document对象
		Document document= DocumentHelper.createDocument();
		//创建根元素
		Element rootElement = document.addElement("studentlist");
		for (Student student:studentList){
			Element studentElement = rootElement.addElement("student");
			studentElement.addAttribute("stuid",String.valueOf(student.getStuid()));
			//也可先给名字再用setText赋值
			Element stunametElement =studentElement.addElement("stuname",student.getStuname());
			Element stunagetElement =studentElement.addElement("stuage",String.valueOf(student.getStuage()) );
			Element stuaddressElement =studentElement.addElement("stuaddress",student.getStuaddress());
		}
		//设置生成xml的格式
		OutputFormat format = OutputFormat.createPrettyPrint();
		//设置编码格式
		format.setEncoding("UTF-8");
		//创建XML字符输出流
		XMLWriter writer = new XMLWriter(new FileOutputStream(new File("src//test//student2.xml")), format);
		//设置是否转义,默认使用转义字符
		writer.setEscapeText(false);
		//写出Document对象
		writer.write(document);
		//关闭流
		writer.close();
	}

}

7.使用第三方包jdom

package test;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;

import java.io.File;
import java.io.FileOutputStream;
import java.util.List;


/**
 * @author 猪八戒
 * 使用第三方包jdom
 *
 */
public class XMLHelper {
	
	public static void createXML3(List<Student> studentList) throws Exception {
		Element rootElement=new Element("studentlist") ;
		for(Student student:studentList){
			Element studentElement = new Element("student");
			studentElement.setAttribute("stuid",String.valueOf(student.getStuid()));
			Element stunameElement = new Element("stuname");
			stunameElement.setText(student.getStuname());

			Element stuageElement = new Element("stuage");
			stuageElement.setText(String.valueOf(student.getStuage()));

			Element stuaddressElement = new Element("stuaddress");
			stuaddressElement.setText(student.getStuaddress());

			studentElement.addContent(stunameElement);
			studentElement.addContent(stuageElement);
			studentElement.addContent(stuaddressElement);
			rootElement.addContent(studentElement);
		}
		Document document=new Document(rootElement);
		//输出Document对象
		Format format= Format.getCompactFormat();
		//设置换行Tab或空格
		format.setIndent(" ");
		format.setEncoding("UTF-8");
		//创建XMLOutputter的对象
		XMLOutputter outputer=new XMLOutputter(format);
		//写出Document
		outputer.output(document,new FileOutputStream(new File("src//test//student3.xml")));
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猪八戒1.0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值