- 浏览: 190187 次
- 性别:
文章分类
最新评论
-
路人甲wxf:
.net可以在不使用证书的情况下修改密码,java做不到吗?
添加用户、修改ad密码 -
zxsosozhuzhu:
你好,我也遇到这个问题了,但是按照你的方法还是附件中文还是乱码 ...
java mail 纯文本附件乱码的解决方案 -
balaschen:
can4you 写道 请教问题:你好,请教一个问题,我现在要模 ...
spring2.0事务配置实验 -
can4you:
/**
* Created: 2007-2-1
* ...
FreeMarker解析字符串模板 -
can4you:
请教问题:你好,请教一个问题,我现在要模拟两个事务同时更新一 ...
spring2.0事务配置实验
package jaxp; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.StringWriter; import java.net.URL; import java.util.HashMap; import java.util.Map; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import javax.xml.transform.Result; import javax.xml.transform.Source; import javax.xml.transform.Templates; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.TransformerFactoryConfigurationError; import javax.xml.transform.sax.SAXSource; import javax.xml.transform.sax.SAXTransformerFactory; import javax.xml.transform.sax.TransformerHandler; import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; import org.xml.sax.Attributes; import org.xml.sax.ContentHandler; import org.xml.sax.DTDHandler; import org.xml.sax.EntityResolver; import org.xml.sax.ErrorHandler; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.SAXNotRecognizedException; import org.xml.sax.SAXNotSupportedException; import org.xml.sax.XMLReader; import org.xml.sax.helpers.AttributesImpl; public class SAX_XSL { public static void main(String[] args) throws Exception{ transform_by_saxsource(); transform_by_saxtransformfactory(); } private static void transform_by_saxtransformfactory() throws TransformerFactoryConfigurationError, TransformerConfigurationException, IOException, SAXException { TransformerFactory factory = TransformerFactory.newInstance(); if(factory.getFeature(SAXTransformerFactory.FEATURE)){ SAXTransformerFactory saxfactory = (SAXTransformerFactory) factory; TransformerHandler handler = saxfactory.newTransformerHandler(new StreamSource(loadxsl())); handler.setResult(new StreamResult(System.out)); CSVParser parser = new CSVParser(); parser.setContentHandler(handler); System.out.println("//------------华丽的分割线----------------//"); parser.parse(new InputSource(loadcsv())); } } private static void transform_by_saxsource() throws TransformerFactoryConfigurationError, TransformerConfigurationException, TransformerException { TransformerFactory factory = TransformerFactory.newInstance(); Templates templates= factory.newTemplates(new StreamSource(loadxsl())); Transformer transformer = templates.newTransformer(); Source source = new SAXSource(new CSVParser(),new InputSource(loadcsv())); Result result = new StreamResult(System.out); transformer.transform(source, result); } private static InputStream loadxsl() { InputStream xsl = SAX_XSL.class.getClassLoader().getResourceAsStream("jaxp/csv.xsl"); return xsl; } private static InputStream loadcsv() { InputStream xsl = SAX_XSL.class.getClassLoader().getResourceAsStream("jaxp/book.csv"); return xsl; } public static class CSVParser implements XMLReader { private static final Attributes EMPTY_ATTRS = new AttributesImpl(); private static final String HTTP_XML_ORG_SAX_FEATURES_NAMESPACES="http://xml.org/sax/features/namespaces"; private ContentHandler contentHandler; private DTDHandler dtdHandler; private EntityResolver entityResolver; private ErrorHandler errorhandler; private Map featureMap = new HashMap(); private Map propertyMap = new HashMap(); public CSVParser() { featureMap.put(HTTP_XML_ORG_SAX_FEATURES_NAMESPACES, new Boolean(true)); } public ContentHandler getContentHandler() { return this.contentHandler; } public void setContentHandler(ContentHandler contenthandler) { this.contentHandler = contenthandler; } public DTDHandler getDTDHandler() { return this.getDTDHandler(); } public void setDTDHandler(DTDHandler dtdhandler) { this.dtdHandler = dtdhandler; } public EntityResolver getEntityResolver() { return this.entityResolver; } public void setEntityResolver(EntityResolver entityresolver) { this.entityResolver = entityresolver; } public ErrorHandler getErrorHandler() { return this.errorhandler; } public void setErrorHandler(ErrorHandler errorhandler) { this.errorhandler = errorhandler; } public boolean getFeature(String name) throws SAXNotRecognizedException, SAXNotSupportedException { Boolean value = (Boolean) featureMap.get(name); if(value == null){ return false; } return value.booleanValue(); } public void setFeature(String name, boolean value) throws SAXNotRecognizedException, SAXNotSupportedException { this.featureMap.put(name, new Boolean(value)); } public void setProperty(String name, Object value) throws SAXNotRecognizedException, SAXNotSupportedException { propertyMap.put(name, value); } public Object getProperty(String name) throws SAXNotRecognizedException, SAXNotSupportedException { return propertyMap.get(name); } public void parse(String systemId) throws IOException, SAXException { parse(new InputSource(systemId)); } private boolean requiredNameSpace() throws SAXException { return getFeature(HTTP_XML_ORG_SAX_FEATURES_NAMESPACES); } public void parse(InputSource inputsource) throws IOException, SAXException { ContentHandler handler = getContentHandler(); if(handler == null){ return; } BufferedReader reader = null; if(inputsource.getCharacterStream()!=null){ reader = new BufferedReader(inputsource.getCharacterStream()); } else if (inputsource.getByteStream()!=null){ reader = new BufferedReader(new InputStreamReader(inputsource.getByteStream())); } else if (inputsource.getSystemId() !=null && inputsource.getSystemId().trim().length()>0){ URL url = new URL(inputsource.getSystemId()); reader = new BufferedReader(new InputStreamReader(url.openStream())); } if(reader == null){ throw new SAXException("invalid inputsource object"); } handler.startDocument(); if(requiredNameSpace()){ handler.startElement("", "books", "books", EMPTY_ATTRS); } else { handler.startElement("", "", "books", EMPTY_ATTRS); } String line = null; while((line = reader.readLine())!=null){ handler.startElement("", "book", "book", EMPTY_ATTRS); String[] values = line.split(","); if(values!=null && values.length>0){ handler.startElement("", "name", "name", EMPTY_ATTRS); handler.characters(values[0].toCharArray(), 0, values[0].length()); handler.endElement("", "name", "name"); if(values.length>=2){ handler.startElement("", "authors", "authors", EMPTY_ATTRS); handler.startElement("", "author", "author", EMPTY_ATTRS); handler.characters(values[1].toCharArray(), 0, values[1].length()); handler.endElement("", "author", "author"); handler.endElement("", "authors", "authors"); } } handler.endElement("", "book", "book"); } if(requiredNameSpace()){ handler.endElement("", "books", "books"); } else { handler.endElement("", "", "books"); } handler.endDocument(); } } }
book.csv:
java & xml,dava java xslt,martin hibernate in action,gavin king spring in action,test
csv.xsl:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> <html> <head> <title>books</title> </head> <body> <xsl:apply-templates/> </body> </html> </xsl:template> <xsl:template match="books"> <table border="1"> <tr> <td>no</td> <td>book name</td> <td>authors</td> </tr> <xsl:apply-templates select="book"> <xsl:sort order="desending" data-type="text" select="name"/> </xsl:apply-templates> </table> </xsl:template> <xsl:template match="book"> <tr> <td><xsl:value-of select="position()"/></td> <td><xsl:value-of select="name"/></td> <td><xsl:value-of select="authors"/></td> </tr> </xsl:template> </xsl:stylesheet>
发表评论
-
通过BOM探测文本文件编码类型
2008-01-24 15:19 2385从tomcat源码抄来的改的: private Object ... -
java mail 纯文本附件乱码的解决方案
2008-01-24 15:16 6119java mail在发送纯文本附件时,当附件内容的编码和jvm ... -
ntdsutil设置AD查询返回最大条目
2008-01-18 16:56 1725AD缺省的最大查询结果为1000个,如果超过1千个,则需要客户 ... -
struts2-layout
2007-11-09 18:17 51testvvvv -
Http基本明文验证
2007-06-13 12:55 1847base64解码使用了novell的实现 java 代码 ... -
如何启用活动目录SSL连接
2007-06-13 10:49 3428ad:http://www.cnblogs.com/chnki ... -
AD User重要属性
2007-06-11 14:55 2187objectClass=User User-Account ... -
添加用户、修改ad密码
2007-06-11 11:28 15839java 代码 /** * ... -
ldap 访问AD测试
2007-06-08 16:37 4398java 代码 java 代码 /** ... -
JNDI 连接Windows Active Directory 教程(转)
2007-06-08 16:36 3278个人收藏,来源:http:// ... -
正确认识memcached的缓存失效
2007-05-29 10:56 9624最近javaeye上memcached相当火,不少人把它当作s ... -
webwork结合memcached实现sna架构
2007-05-28 14:04 5789实现思路,使用一个拦截器实现session的处理: ... -
activemq实验
2007-05-17 11:37 2127实验环境:activemq4.1.1/spring1.2.8 ... -
发现用Spring配置事务不爽的一个地方
2007-05-11 16:41 2036举个例子: SomeService implement I ... -
Java Transaction Design Strategies读书笔记
2007-05-14 15:34 2421第一种:Client Owner Transaction Ma ... -
有谁知道银行的跨行转帐是怎么保证交易的原子性和一致性?
2007-05-10 09:18 23032最近在看《Java Transaction Design St ... -
InnerClass引用的外层local final变量,究竟具有什么语义
2006-12-21 18:04 6656先看这段代码: public class ShowAnon ...
相关推荐
一个项目同时用dom解析和sax解析xml文件貌似会报错,项目框架建一直是用sax和dom4j解析xml文件的。当我用dom解析xml文件。导入包后就报错识别不了xml文件的编码格式。于是做了一个sax解析xml文件的实例
SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件
java用sax实现修改xml文件内容,util工具包中,包含所需jar文件、测试xml文件、startup.bat文件以及使用说明文档
Servlet利用SAX解析XML文档,JAX,JSWDP,Servlet利用SAX解析XML文档
android sax ,dom生成xml文件
SAX解析超大XML文件 示例代码 SAX解析超大XML文件 示例代码 SAX解析超大XML文件 示例代码
SAX2方法读取XML文件,内容非常详实 (read XML file through SAX2 method, and it is in details.)
Servlet利用SAX解析XML文档(新上传的有源码)Servlet利用SAX解析XML文档(新上传的有源码)Servlet利用SAX解析XML文档(新上传的有源码)Servlet利用SAX解析XML文档(新上传的有源码)Servlet利用SAX解析XML文档(新上传的有...
用sax写的生成大XML文件。 用SAX写的解析大XML文件。 在解析大的XML文件,从java语言来说的话,目前应该SAX是比较好用的一个框架。
Sax解析xml文件详细例子,解析复杂节点的xml,把内容显示到view中,例子简单完整,易用
本代码是python下使用SAX才操作XML文件的。SAX是基于事件驱动的。在处理过程中,它将XML文档的处理转化为一系列事件的处理,通过事件处理器处理XML文档。它的速度很快,而且占用的内存很小,适用于一些比较大的XML...
sax2.0.1版本的jar包,可用于xml文件的解析。 SAX是一种解析速度快并且占用内存少的XML解析器,非常适用于Android的移动设备。 SAX采用事件驱动`,也就是说,它并不是需要解析完整的文档,在按内容顺序解析文档的...
Sax解析XML文件解
Android 中利用SAX ,Dom,pull解析 XML 文件代码 每种方式都介绍了代码,具体的文档在个人博客: http://blog.csdn.net/blueskydyliu/article/details/7055311 中介绍了。
dom和sax解析的区别,dom的概念,sax的概念
压缩包里面有两个文件:SAX.java和SAXparse.java 用来解析大于100M的xml文件,SAX读取xml不同于DOM方式,DOM方式在解析xml前需要全部加载xml文件,当xml文件很大时,就会出现内存不足的问题,而SAX则是逐行读取xml...
利用SAX、DOM和Pull实现对schools.xml的解析,并进行单元测试 利用Pull实现schools.xml的创建
绝对可用的SAX解析XML文件项目,费了九牛二虎之力,才找到的好资源,特与大家共享出来。直接导入eclipse就可运行,无需任何配置。
SAX解析XML文件以及对取出的id放进数组进行冒泡排序(从大到小排序和从小到大排序)
XML文件解析器 支持dom解析和sax模式解析,c语言实现