-
更正后: 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
提交
取消