600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Java——SAX生成XML文件

Java——SAX生成XML文件

时间:2020-07-13 16:09:27

相关推荐

Java——SAX生成XML文件

SAX生成XML文件

准备工作

创建一个SAXTransformerFactory 类对象

//创建一个 SAXTransformerFactory 类对象SAXTransformerFactory tff = (SAXTransformerFactory)SAXTransformerFactory.newInstance();

通过SAXTransformerFactory 对象创建一个 Transformer 对象

//通过 SAXTransformerFactory 对象创建一个 TransformerHandler 对象TransformerHandler handler = tff.newTransformerHandler();

设置 xml 文件编码格式和自动换行

//设置生成的 XML 文件编码格式tr.setOutputProperty(OutputKeys.ENCODING, "utf-8");//设置生成的 XML 文件自动换行tr.setOutputProperty(OutputKeys.INDENT, "yes");

判断生成的xml文件是否存在,不存在就创建一个新的

//如果不存在,就创建一个新的 XML 文件File file = new File("newSchool.xml");if (!file.exists()) {file.createNewFile();}

创建一个 Result 对象,并且使其与 TransformerHandler对象关联

//创建一个Result 对象,并且使其与 TransformerHandler 对象关联Result result = new StreamResult(new FileOutputStream(file));handler.setResult(result);

利用 handler 对象进行 xml 文件内容的编写

打开 document

//打开 documenthandler.startDocument();

生成根节点标签

AttributesImpl atts = new AttributesImpl();//根节点开始标签handler.startElement("", "", "School", atts);

设置字节点的属性和属性值 并创建子节点的开始标签

//设置属性和属性值atts.addAttribute("", "", "id", "", "1");//子节点开始标签handler.startElement("", "", "student", atts);

创建子节点下的 name 节点并给其添加内容

atts.clear(); //清空子节点设的值//字节点下name节点开始标签handler.startElement("", "", "name", atts);String name="小王";handler.characters(name.toCharArray(), 0, name.length());//字节点下name节点结束标签handler.endElement("", "", "name");

有开始就结束,在 XML 当中标签都是成对出现的,下面就是结束标签,以及关闭 document对象

//子节点结束标签handler.endElement("", "", "student");//根节点结束标签handler.endElement("", "", "School");//关闭 documenthandler.endDocument();

运行结果:

<?xml version="1.0" encoding="utf-8"?><School><student id="1"><name>小王</name></student></School>

完整代码:

import javax.xml.transform.OutputKeys;import javax.xml.transform.Result;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerConfigurationException;import javax.xml.transform.sax.SAXTransformerFactory;import javax.xml.transform.sax.TransformerHandler;import javax.xml.transform.stream.StreamResult;import org.xml.sax.SAXException;import org.xml.sax.helpers.AttributesImpl;public class CreateXMLBySAX {public static void main(String[] args) {//创建一个 SAXTransformerFactory 类对象SAXTransformerFactory tff = (SAXTransformerFactory)SAXTransformerFactory.newInstance();try {//通过 SAXTransformerFactory 对象创建一个 TransformerHandler 对象TransformerHandler handler = tff.newTransformerHandler();//通过 TransformerHandler 对象创建一个 Transformer 对象Transformer tr = handler.getTransformer();//设置生成的 XML 文件编码格式tr.setOutputProperty(OutputKeys.ENCODING, "utf-8");//设置生成的 XML 文件自动换行tr.setOutputProperty(OutputKeys.INDENT, "yes");//如果不存在,就创建一个新的 XML 文件File file = new File("newSchool.xml");if (!file.exists()) {file.createNewFile();}//创建一个Result 对象,并且使其与 TransformerHandler 对象关联Result result = new StreamResult(new FileOutputStream(file));handler.setResult(result);//利用 handler 对象进行 XML 文件内容的编写//打开 document handler.startDocument();//为了创建节点属性和属性值AttributesImpl atts = new AttributesImpl();//根节点开始标签handler.startElement("", "", "School", atts);//atts.clear(); //清空 atts 的值//设置属性和属性值atts.addAttribute("", "", "id", "", "1");//子节点开始标签handler.startElement("", "", "student", atts);atts.clear(); //清空子节点设的值//字节点下name节点开始标签handler.startElement("", "", "name", atts);String name="小王";handler.characters(name.toCharArray(), 0, name.length());//字节点下name节点结束标签handler.endElement("", "", "name");//子节点结束标签handler.endElement("", "", "student");//根节点结束标签handler.endElement("", "", "School");//关闭 document handler.endDocument();} catch (TransformerConfigurationException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} catch (SAXException e) {e.printStackTrace();}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。