- 浏览: 117582 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
HuoYun:
兄弟,这个代码对于其他excel转换会出问题,如数据库导出的e ...
excel文件转换为pdf文件的问题总结 -
listen-raining:
这两天正在弄这个东东
excel文件转换为pdf文件的问题总结 -
李001:
你是英雄!
excel文件转换为pdf文件的问题总结 -
237304457:
少文,功 能有全事例不,
excel文件转换为pdf文件的问题总结 -
237304457:
提供大资源是哪种方式呀?
excel文件转换为pdf文件的问题总结
package xml_util; import java.io.File; import java.io.OutputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; /** * 这里我的想法:是抛砖引玉,渴望大家提出更好和不足建议 * 工具类只提供遍历操作,不提供增删操作 * 在Dom xml增删操作中只是在内存中进行的 * 在xml文档中我们是看不出的,在增删操作之后必须重新输出xml文档之后,才可以看到结果 * @author kevin.wangwei * 2010-4-5 */ public final class XmlUtil { /** xml 文档对象 */ private Document document; /** 工具类单例对象 */ private static XmlUtil instance; /** xml在系统中的路径 */ private String xmlFilePath; /**xml 根元素名称 */ private String documentElementName; private XmlUtil(String xmlFilePath)throws Exception{ this.xmlFilePath=xmlFilePath; readXmlDocument(); } public String getXmlFilePath() { return xmlFilePath; } public String getDocumentElementName() { return documentElementName; } /** * 获得工具类实例 * @return */ public static XmlUtil newInstance(String xmlFilePath) throws Exception{ if(instance==null){ synchronized(XmlUtil.class){ if(instance==null){ instance=new XmlUtil(xmlFilePath); } } } return instance; } /** * 读取xml文档 * @throws Exception */ private void readXmlDocument() throws Exception{ DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance(); DocumentBuilder db=dbf.newDocumentBuilder(); document=db.parse(new File(xmlFilePath)); Element documentElement=document.getDocumentElement(); if(documentElement!=null){ documentElementName=documentElement.getNodeName(); } } /** * 打印xml文档内容 */ public String printerXmlDocument(){ StringBuffer sb=new StringBuffer(); sb.append("<?xml version=\""+document.getXmlVersion()+"\" encoding=\""+document.getXmlEncoding()+"\" ?>\n"); printerNode(document,sb); return sb.toString(); } /** * 打印文本节点内容 * @param node */ private void printerTextNodeInfo(Node node,StringBuffer sb){ if(node==null){ return; } String value=StringUtil.validateString(node.getNodeValue()); if(!(value.trim().equals(""))){//除去空白的文本节点 sb.append(value+"\n"); } } /** * 打印属性节点名称和值 * @param node */ private void printerAttributesNode(Node node,StringBuffer sb){ if(node==null){ return; } NamedNodeMap attrs=node.getAttributes(); int length=attrs.getLength(); for(int i=0;i<length;i++){ Node attr=attrs.item(i); sb.append(" "+StringUtil.validateString(attr.getNodeName())+"=\""+StringUtil.validateString(attr.getNodeValue())+"\""); } } /** * 打印xml文档中所有节点 * @param node * @param sb */ private void printerNode(Node node,StringBuffer sb){ if(node==null){ return; } NodeList nl=node.getChildNodes(); for(int i=0;i<(nl.getLength());i++){ Node n=nl.item(i); if(n.getNodeType()==Node.ELEMENT_NODE){ String nodeName=n.getNodeName(); sb.append("<"+n.getNodeName()); printerAttributesNode(n,sb); sb.append(">\n"); printerNode(n,sb); sb.append("</"+nodeName+">\n"); }else if(n.getNodeType()==Node.TEXT_NODE){ printerTextNodeInfo(n,sb); }else if(n.getNodeType()==Node.COMMENT_NODE){ sb.append("<"+n.getNodeName()+">"); printerTextNodeInfo(n,sb); sb.append("</"+n.getNodeName()+">\n"); }else{ printerTextNodeInfo(n,sb); } } } /** * 依据节点名称查找该节点的所有文本节点的值(包括该节点的子节点) * @param nodeName * @return */ public ArrayList<String> getNodeValue(String nodeName){ if(!StringUtil.isValidateString(nodeName)){ return null; } ArrayList<String> values=new ArrayList<String>(); NodeList nl=document.getElementsByTagName(nodeName); int length=nl.getLength(); for(int i=0;i<length;i++){ Node node=nl.item(i); if(node.getNodeType()==Node.TEXT_NODE){ String value=StringUtil.validateString(node.getNodeValue()); if(!(value.trim().equals(""))){ values.add(value); } }else if(node.getNodeType()==Node.ELEMENT_NODE){ traversalNode(node,values); } } return values; } /** * 递归查找当前节点的所有文本节点 * @param node * @param values */ private void traversalNode(Node node,ArrayList<String> values){ if(node==null){ return ; } NodeList nl=node.getChildNodes(); int length=nl.getLength(); for(int i=0;i<length;i++){ Node n=nl.item(i); if(n.getNodeType()==Node.TEXT_NODE){ String value=StringUtil.validateString(n.getNodeValue()); if(!(value.trim().equals(""))){ values.add(value); } }else if(n.getNodeType()==Node.ELEMENT_NODE){ traversalNode(n,values); } } } /** * 依据当前元素名称,查找该元素的所有属性 * @param nodeName * @return */ public Map<String,String> getNodeAttributes(String nodeName) throws Exception{ if(!StringUtil.isValidateString(nodeName)){ return null; } Map<String,String> map=new HashMap<String,String>(); NodeList nl=document.getElementsByTagName(nodeName); int length=nl.getLength(); for(int i=0;i<length;i++){ Node node=nl.item(i); if(node.getNodeType()!=Node.ELEMENT_NODE){ throw new Exception("这不是一个有效节点元素"); }else{ NamedNodeMap attrs=node.getAttributes(); int len=attrs.getLength(); for(int j=0;j<len;j++){ Node attr=attrs.item(j); map.put(StringUtil.validateString(attr.getNodeName()), StringUtil.validateString(attr.getNodeValue())); } } } return map; } /** * 依据指定输出流输出xml文档 * @param toFilePath * @throws Exception */ public void transformer(OutputStream out) throws Exception{ TransformerFactory tff=TransformerFactory.newInstance(); Transformer tf=tff.newTransformer(); DOMSource source=new DOMSource(document); StreamResult result=new StreamResult(out); tf.transform(source, result); } public static void main(String args[]) throws Exception{ XmlUtil xml=XmlUtil.newInstance("d:\\test2.xml"); //System.out.println(xml.printerXmlDocument()); //for(String str:xml.getNodeValue("id")){ // System.out.println(str); //} //System.out.println(xml.getNodeAttributes("student")); //xml.transformer(System.out); } }
发表评论
-
java 解析数学表达式
2011-11-20 10:33 5647数学表达式解析工具类: 支持负数运算, 多层括号嵌套运算 ... -
java代码模拟计算机实现原理(一)加法器模拟
2011-09-29 23:30 3334加法器是有两种基本逻辑门电路:异或门、与门电路组成的 ... -
jar 命令简介
2011-02-16 09:55 1211jar 命令用途:采用zip和ZLIB的压缩格式,将一系列程序 ... -
javac 命令
2011-02-16 09:17 1338最简单的方式(javac -d)首先,需要编译JAVA文件,需 ... -
阿拉伯数组转换成对应中文
2011-02-12 11:52 1161package com.heda.code; publi ... -
java二叉树实现
2011-02-12 11:50 1075package com.heda.code; publi ... -
最大公约数和最小公倍数
2011-02-12 11:48 1042package com.heda.code; publi ... -
比较完整数据源实现
2010-06-12 21:35 1492package com.bpsoft.bl ... -
jxl 操作excel Demo
2010-05-25 16:02 1364程序是用:jxl技术来操作excel文档的,实现了excel插 ... -
Jacob操作Word详细教程
2010-05-11 21:16 5462首先, ... -
Java 正则表达式小结
2010-05-11 20:25 1499Java 中正则表达式是在Java 1.4版本以后才出现的。在 ... -
日志记录器
2010-03-12 23:12 991package log_util; import jav ... -
java1.5新特性枚举实现原理
2010-03-09 00:24 1157package com.bp_soft.day01; /** ... -
Struts 1实现原理之我理解
2010-03-06 23:23 1495Struts是在servlet基础上设计的一种框架。下面看一段 ... -
JDBC模板类实现(version1.1)
2010-01-30 14:34 1410package daoUtil.daoTemplate; ... -
BeanUtils.copyProperties(son, father)使用感想
2010-01-28 12:20 3179BeanUtils.copyProperties(son, f ... -
jdbc数据源
2010-01-20 19:06 1101数据源设计思想和数据库连接池设计思想基本相似。大家知道在操作数 ... -
经典JDBC DAOFactory类实现
2010-01-09 23:02 2440package ajax.user.language.fact ... -
WEB应用中常用的数据库连接池
2009-12-26 16:07 1385数据库连接池是WEB应用中必不可少的东西,这是我个人最近参照别 ... -
非常好获得数据库连接工具类
2009-12-26 15:58 1831这是一个写的非常好的获得数据库连接工具类,里面提供常用数据库驱 ...
相关推荐
在这个"dom4j工具类使用例子"中,我们将深入探讨如何利用DOM4J进行XML处理。 首先,`Dom4jUtil.java`可能是包含DOM4J实用方法的类。这个类可能包括了创建、查询、修改XML文档的各种静态方法。例如,可能会有用于...
在本教程中,我们将深入探讨如何使用DOM4J来解析XML文件,并创建一个无敌连环解析工具类。 首先,我们需要了解XML的基本概念。XML(可扩展标记语言)是一种标记语言,常用于数据交换和存储。它的结构化特性使其非常...
自己写的一个dom4j解析xml文件工具类
XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件、文档存储等领域。在处理XML时,DOM(Document Object...在处理复杂的数据结构和需要动态更新XML时,DOM是不可或缺的工具。
本文将深入探讨`Dom4jUtils`工具类如何增强DOM4J的功能,以及在`MarkerIce.jar`中它如何帮助开发者更便捷地处理XML。 首先,`Dom4jUtils`工具类通常包含了对DOM4J库的一系列实用方法,旨在简化XML的读取、解析、...
这个“xml-dom4j解析工具类”显然是为了简化XML文档操作而设计的,它利用DOM4J库来处理XML数据。 首先,让我们详细了解一下DOM4J的核心概念。DOM4J提供了一个灵活的API,以树形结构表示XML文档。在DOM(Document ...
基于dom4j的读写xml文件的工具包。封装了dom4j操作xml文档的常和方法。 支持两种读写方法。1:针对小文件的读取整个文档,2:针对大文件的,逐行读取。读到几百M文件毫无压力。
**DOM4J工具类详解** DOM4J是一个强大的Java XML API,它提供了全面的XML处理功能,包括解析、操作和生成XML文档。DOM4J在Java社区中被广泛使用,因其简洁的API和高效的性能而受到青睐。在这个文档中,我们将深入...
本文将详细讲解如何使用Java实现XML到Map以及Map到XML的一键转换,并介绍一个已封装好的工具类`EasyXmlUtil`。 首先,XML到Map的转换涉及到XML的解析。在Java中,我们可以使用`javax.xml.parsers....
**DOM4J工具类详解** DOM4J是一个强大的Java XML处理库,它提供了一套灵活且功能丰富的API,使得在Java应用程序中解析、创建、修改XML文档变得异常简单。DOM4J的名字来源于“DOM for Java”,它是一个基于DOM模型的...
在IT行业中,代码重构是一项重要的技能,它有助于提高...总之,这次重构之旅旨在通过创建一个高效的XML工具类,提高代码的可复用性和性能。对于任何需要处理XML数据的Java开发者来说,这是一个值得学习和借鉴的案例。
总结,DOM4J是Java开发中处理XML文档的强大工具,它的易用性和灵活性使得XML操作变得简单。无论是读取、写入还是搜索XML,DOM4J都能提供高效的方法。在实际项目中,结合源码阅读和使用DOM4J工具,能够更深入地理解和...
总之,DOM4J是Java世界中处理XML的强大工具,它集成了多种解析方式,提供了丰富的功能,且具有良好的性能和社区支持,是XML处理的首选库之一。无论是小型项目还是大型系统,DOM4J都能提供可靠的支持。
在Java中,DOM解析主要通过`javax.xml.parsers.DocumentBuilderFactory`和`javax.xml.parsers.DocumentBuilder`类实现。 1. **DOM解析步骤**: - 创建`DocumentBuilderFactory`实例。 - 使用`...
Java DOM(Document Object Model)是一种基于树形结构的XML文档...尽管DOM操作相对消耗资源,但其灵活性和强大功能使其成为处理XML的常用工具。对于复杂的XML操作,可以结合使用其他库如JAXB或JDOM,以简化编程任务。
主要方法: /** * 使用条件:在发放外部建立一个静态Map, String> * 此方法得到一个map,map中的key为节点的名字,value为节点的值 ... public static void getInfoFromXml(String xml, String key)
* 本类是专门解析XML文件的,主要用于为系统读取自己的配置文件时提供最方便的解析操作 * @author HX * */ public class XmlManager { /** * 得到某节点下某个属性的值 * @param element 要获取属性的...
"Dom4j写XML和读取XML的工具类,非常好用" 这个标题表明我们要讨论的是一个使用Dom4j库来处理XML文档的Java工具类。Dom4j是一个非常流行的Java库,它提供了XML的解析、创建、修改以及查询功能,使得在Java中操作XML...
本教程将详细介绍一个名为"WXML"的XML解析工具类,该工具类能便捷地将XML数据转换为Java对象,从而简化开发流程。 首先,XML解析分为两种主要方式:DOM(Document Object Model)和SAX(Simple API for XML)。DOM...
本文将详细介绍如何创建一个Java通用的XML解析工具类,以便于在项目中复用和简化XML处理。 首先,我们来看DOM解析方式。DOM解析器会将整个XML文档加载到内存中,形成一棵树形结构,便于对XML进行随机访问。以下是一...