为了账号安全,请及时绑定邮箱和手机立即绑定

Java眼中的XML 文件写入

难度初级
时长 2小时 0分
学习人数
综合评分9.67
227人评价 查看评价
9.8 内容实用
9.7 简洁易懂
9.5 逻辑清晰
  • 更正后: SAX解析开始 ===========开始遍历某一本书的内容============ book元素的第1个属性名是:id---属性值是:1 节点名是:name---节点值是:冰与火之歌 节点名是:author---节点值是:乔治马丁 节点名是:year---节点值是:2014 节点名是:price---节点值是:89 =========结束遍历某一本书的内容:============ ===========开始遍历某一本书的内容============ book元素的第1个属性名是:id---属性值是:2 节点名是:name---节点值是:安徒生童话 节点名是:year---节点值是:2004 节点名是:price---节点值是:77 节点名是:language---节点值是:English =========结束遍历某一本书的内容:============ SAX解析结束
    查看全部
  • SAX解析开始 ===========开始遍历某一本书的内容============ book元素的第1个属性名是:id---属性值是:1 节点名是:name---节点值是:冰与火之歌 节点名是:author---节点值是:乔治马丁 节点名是:year---节点值是:2014 节点名是:price---节点值是:89 =========结束遍历某一本书的内容:============ ===========开始遍历某一本书的内容============ book元素的第1个属性名是:id---属性值是:2 节点名是:name---节点值是:安徒生童话 节点名是:year---节点值是:2004 节点名是:price---节点值是:77 节点名是:language---节点值是:English =========结束遍历某一本书的内容:============ SAX解析结束 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4 at com.sun.org.apache.xml.internal.serializer.ToStream.characters(Unknown Source) at com.sun.org.apache.xml.internal.serializer.ToUnknownStream.characters(Unknown Source) at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerHandlerImpl.characters(Unknown Source) at com.imooc.test.SAXTest.createXML(SAXTest.java:99) at com.imooc.test.SAXTest.main(SAXTest.java:148)
    查看全部
  • 通过SAX生成XML文件的节点步骤<br> 先生成外围节点在外围节点的startElement和endElement中间生成子节点<br> 分两种情况:<br> 1,有属性的节点<br> (1)创建属性对象,并设置属性名以及属性值<br> AttributesImpl ai =new AttributesImpl();<br> ai.addAttribute(null,null,name,null,value);<br> (2)创建节点<br> handler.startElement(null,null,name,ai)<br> (3)添加节点内容(若无内容则不用进行这一步)<br> handler.characters(String.toCharArray(),int,int);<br> (4)结束节点<br> handler.endElement(null,null,name);<br> 2,无属性的节点<br> (1)清空属性对象<br> ai.clear();<br> (2)创建节点<br> handler.startElement(null,null,name,ai)<br> (3)添加节点内容(若无内容则不用进行这一步)<br> handler.characters(String.toCharArray(),int,int);<br> (4)结束节点<br> handler.endElement(null,null,name);
    查看全部
  • /** * @Title: MySaxHandler.java * @Description: TODO * @author ThinkPad * @version 1.0 * @date 2014年7月13日 */ package com.sax.example; import java.util.ArrayList; import java.util.List; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; /** * @author ThinkPad * */
    查看全部
  • public class MySaxHandler1 extends DefaultHandler { /** * xml 解析结果 */ public static List<Person> personList; private Person person; private String node; private boolean flag = false; public void startDocument () throws SAXException { //开始解析文档 super.startDocument(); personList = new ArrayList<Person>(); } public void endDocument () throws SAXException { //文档解析结束 super.endDocument(); } public void startElement (String uri, String localName, String qName, Attributes attributes) throws SAXException { //开始解析节点 super.startElement(uri, localName, qName, attributes); flag = true; if( qName.equals("person")){ person = new Person(); } node = qName; }
    查看全部
  • public void characters (char[] ch, int start, int length) throws SAXException { //保存节点内容 super.characters(ch, start, length); if(!flag) { return; } String s = new String(ch, start, length); switch (node) { case "name": person.setName(s); break; case "sex": person.setSex(s); break; case "age": person.setAge(s); break; default: break; } } public void endElement (String uri, String localName, String qName) throws SAXException { //结束解析节点 super.endElement(uri, localName, qName); flag = false; if( qName.equals("person")){ personList.add(person); } } }
    查看全部
  • <?xml version="1.0" encoding="utf-8"?> <persons> <person> <name>Tom Jeff</name> <sex>M</sex> <age>20</age> </person> <person> <name>Cater</name> <sex>M</sex> <age>23</age> </person> <person> <name>Susan</name> <sex>F</sex> <age>19</age> </person> <person> <name>Lily</name> <sex>F</sex> <age>22</age> </person> </persons>
    查看全部
  • tr.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); // tr.setOutputProperty(OutputKeys.ENCODING, "GBK");
    查看全部
  • try { // 2.通过SAXTransformerFactory对象创建一个TransformerHandler对象 TransformerHandler handler = tff.newTransformerHandler(); // 3.通过handler对象创建一个Transformer对象 Transformer tr = handler.getTransformer(); // 4.通过Transformer对象对生成的xml文件进行设置 // 设置xml的编码 // tr.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); tr.setOutputProperty(OutputKeys.ENCODING, "GBK"); // 设置xml“是否换行” tr.setOutputProperty(OutputKeys.INDENT, "yes"); // 5.创建一个Result对象 File f = new File("src/res/newbooks.xml"); if (!f.exists()) { f.createNewFile(); } // 6.创建Result对象,并使其与handler关联 Result result = new StreamResult(new FileOutputStream(f)); handler.setResult(result); // // 3.通过handler对象创建一个Transformer对象 // Transformer tr = handler.getTransformer(); // // 4.通过Transformer对象对生成的xml文件进行设置 // // 设置xml的编码 // tr.setOutputProperty(OutputKeys.ENCODING, "GBK"); // // 设置xml“是否换行” // tr.setOutputProperty(OutputKeys.INDENT, "yes");
    查看全部
  • <?xml version="1.0" encoding="UTF-8"?><bookstore><book id="1"/></bookstore>
    查看全部
  • // 7.利用handler对象进行xml文件内容的编写 // 打开document handler.startDocument(); AttributesImpl attr = new AttributesImpl(); handler.startElement("", "", "bookstore", attr); attr.clear(); attr.addAttribute("", "", "id", "", "1"); handler.startElement("", "", "book", attr); handler.endElement("", "", "book"); handler.endElement("", "", "bookstore"); //关闭document handler.endDocument(); <?xml version="1.0" encoding="UTF-8"?><bookstore> <book id="1"/> </bookstore>
    查看全部
  • SAXTransformerFactory tff = (SAXTransformerFactory) SAXTransformerFactory .newInstance(); try { // 2.通过SAXTransformerFactory对象创建一个TransformerHandler对象 TransformerHandler handler = tff.newTransformerHandler(); // 3.通过handler对象创建一个Transformer对象 Transformer tr = handler.getTransformer(); // 4.通过Transformer对象对生成的xml文件进行设置 // 设置xml的编码 tr.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); // 设置xml“是否换行” tr.setOutputProperty(OutputKeys.INDENT, "yes"); // 5.创建一个Result对象 File f = new File("src/res/newbooks.xml"); if (!f.exists()) { f.createNewFile(); } // 6.创建Result对象,并使其与handler关联 Result result = new StreamResult(new FileOutputStream(f)); handler.setResult(result); // 7.利用handler对象进行xml文件内容的编写 // 打开document handler.startDocument(); AttributesImpl attr = new AttributesImpl(); handler.startElement("", "", "bookstore", attr); handler.endElement("", "", "bookstore"); //关闭document handler.endDocument();
    查看全部
  • <?xml version="1.0" encoding="UTF-8"?><bookstore>
    查看全部
  • book元素的第1个属性名是:id---属性值是:1 节点名是:name---节点值是:冰与火之歌 节点名是:author---节点值是:乔治马丁 节点名是:year---节点值是:2014 节点名是:price---节点值是:89 =========结束遍历某一本书的内容:============ ===========开始遍历某一本书的内容============ book元素的第1个属性名是:id---属性值是:2 节点名是:name---节点值是:安徒生童话 节点名是:year---节点值是:2004 节点名是:price---节点值是:77 节点名是:language---节点值是:English =========结束遍历某一本书的内容:============ SAX解析结束
    查看全部
  • 使用SAX生成XML文件中的节点以及节点属性 1,打开Document handler.startDocument(); 2,创建属性对象 AttributesiImpl ai = new AttributesImpl(); 3,创建无属性节点 handler.startElement("","","bookStore","ai"); 4,创建有属性节点 ai.clear();(清除原有属性内容) ai.addAttribute("","","id","","1");(设置新的属性内容) handler.startElement("","","book","ai"); 5,结束节点 handler.endElement(); 6,结束Document handler.endDocument();
    查看全部

举报

0/150
提交
取消
课程须知
本课程是 Java 的中级课程,需要各位小伙伴们熟悉 Java 面向对象的思想,并能熟练掌握 Java I/O 的相关知识。对什么是XML,如何读取XML有疑惑的小伙伴们,可以先去学习《Java眼中的XML---文件读取》进修。
老师告诉你能学到什么?
1、通过DOM方式生成xml文档 2、通过SAX方式生成xml文档 3、通过DOM4J方式生成xml文档 4、通过JDOM方式生成xml文档 5、不同生成方法大PK

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!