- 浏览: 192668 次
- 性别:
文章分类
最新评论
-
路人甲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 2442从tomcat源码抄来的改的: private Object ... -
java mail 纯文本附件乱码的解决方案
2008-01-24 15:16 6253java mail在发送纯文本附件时,当附件内容的编码和jvm ... -
ntdsutil设置AD查询返回最大条目
2008-01-18 16:56 1788AD缺省的最大查询结果为1000个,如果超过1千个,则需要客户 ... -
struts2-layout
2007-11-09 18:17 51testvvvv -
Http基本明文验证
2007-06-13 12:55 1905base64解码使用了novell的实现 java 代码 ... -
如何启用活动目录SSL连接
2007-06-13 10:49 3481ad:http://www.cnblogs.com/chnki ... -
AD User重要属性
2007-06-11 14:55 2243objectClass=User User-Account ... -
添加用户、修改ad密码
2007-06-11 11:28 15892java 代码 /** * ... -
ldap 访问AD测试
2007-06-08 16:37 4453java 代码 java 代码 /** ... -
JNDI 连接Windows Active Directory 教程(转)
2007-06-08 16:36 3313个人收藏,来源:http:// ... -
正确认识memcached的缓存失效
2007-05-29 10:56 9666最近javaeye上memcached相当火,不少人把它当作s ... -
webwork结合memcached实现sna架构
2007-05-28 14:04 5853实现思路,使用一个拦截器实现session的处理: ... -
activemq实验
2007-05-17 11:37 2183实验环境:activemq4.1.1/spring1.2.8 ... -
发现用Spring配置事务不爽的一个地方
2007-05-11 16:41 2082举个例子: SomeService implement I ... -
Java Transaction Design Strategies读书笔记
2007-05-14 15:34 2462第一种:Client Owner Transaction Ma ... -
有谁知道银行的跨行转帐是怎么保证交易的原子性和一致性?
2007-05-10 09:18 23341最近在看《Java Transaction Design St ... -
InnerClass引用的外层local final变量,究竟具有什么语义
2006-12-21 18:04 6704先看这段代码: public class ShowAnon ...
相关推荐
六、XSLT转换 XSLT(eXtensible Stylesheet Language Transformations)是一种专门用于转换XML文档的编程语言。通过编写XSL样式表,可以定义XML到XML、XML到HTML或其他格式的转换规则。XSLT具有强大的节点处理能力,...
解析Excel文件意味着将其中的数据提取出来,或者将其内容转换为其他格式。这可以通过多种方式实现: 1. **使用APIs**:例如,Microsoft提供的COM接口(如Excel Interop)允许在.NET环境中直接操作Excel文件。此外,...
这可能包含XML文件、对应的Java对象类、转换脚本或测试代码,帮助用户理解工具的使用方法和验证转换效果。 5. **实际应用**:在软件开发中,XML转换常用于API交互、配置文件读取、数据库数据交换等。例如,Web服务...
本文将深入探讨如何利用Java处理XML文档,通过使用Document Object Model (DOM),Simple API for XML (SAX),以及Extensible Stylesheet Language Transformations (XSLT)等技术来解析、操作和转换XML数据。...
8. **XSLT**:XML样式表转换(XSLT)用于转换XML文档的结构和内容。它可以将XML转换为HTML、另一个XML格式,甚至是文本或CSV文件。 9. **编程库与API**:在不同编程语言中,如Java(JAXB, DOM, SAX, XSLT),C#...
3. **XPath和XSLT转换**: 除了解析,`lxml`还支持XSLT转换,允许将一个XML文档转换为另一个XML或HTML文档,极大地扩展了数据处理能力。 4. **ElementTree API兼容**: `lxml`与Python的内置`xml.etree.ElementTree`...
2. **规范性引用文件**:XML遵循一系列标准和规范,如W3C的XML 1.0或1.1版本规范,以及XML Namespaces、XPath、XSLT和XSD(XML Schema Definition)等。这些规范定义了XML的语法、命名规则和验证机制。 3. **术语和...
XML的导入导出涉及XML解析、XPath查询、XSLT转换等技术,对于大型XML文件,还需要考虑性能优化,如使用DOM、SAX或StAX解析器。在实际应用中,根据数据量、复杂性和性能需求选择合适的方法。 总结,数据库与XML的...
通过XSLT,我们可以将XML数据转换成HTML,便于网页展示,或者转换成其他格式,如CSV,适应不同的应用场景。 XML大全的学习涵盖XML的基础语法、解析方法、验证机制(如DTD、XML Schema)、XPath(XML Path Language...
信息更新是对XML文档进行修改,而导出报表则可能需要将XML数据转换为更友好的格式,如CSV或PDF,这可以通过Java的转换库如XSLT(Extensible Stylesheet Language Transformations)来完成。 在实际开发中,为了保证...
5. **XML转换**:库还包括了一些XML转换工具,如将XML转换为其他格式,如HTML或CSV,或者执行XSLT(Extensible Stylesheet Language Transformations)转换。 在实际应用中,Aduna Commons XML常被用于需要大量处理...