- 浏览: 48242 次
- 性别:
- 来自: 大连
最近访客 更多访客>>
最新评论
-
wildeurope:
楼主代码 看起来很乱 不过还是有实用性的 借鉴下
java导出Excel 玩玩吧! -
evanz:
这个只能打word中的文字吧,图片应该是不能打得
java打印word的分享 -
xin163:
不是一般人谁能看懂?
java导出Excel 玩玩吧! -
lerous:
包提供的还不错````至于代码`?````
java导出Excel 玩玩吧! -
jiyuchonger:
很垃圾。。。
java导出Excel 玩玩吧!
java 代码
- import java.io.*;
- import java.util.*;
- import javax.xml.XMLConstants;
- import javax.xml.parsers.DocumentBuilder;
- import javax.xml.parsers.DocumentBuilderFactory;
- import javax.xml.transform.Source;
- import javax.xml.transform.dom.DOMSource;
- import javax.xml.transform.stream.StreamSource;
- import javax.xml.validation.Schema;
- import javax.xml.validation.SchemaFactory;
- import javax.xml.validation.Validator;
- import org.dom4j.*;
- import org.dom4j.io.*;
- import org.xml.sax.SAXException;
- /**
- * name:XMLUtil.java
- *
- * desc: 本类是xml文档操作实用类,提供对xml文档操作的常用方法。
- *
- */
- public class XMLUtil
- {
- private Document doc;
- /**
- * 构造函数
- *
- */
- public XMLUtil()
- {
- }
- /**
- * 方法完成xml文件的加载,在调用本类的其他方法前需要调用loadFromFile()或者loadFromString()
- * @param file xml文件对象
- * @throws Exception
- */
- public void loadFromFile(File file)throws Exception
- {
- //参数无效
- if (file == null || !file.exists() || file.isDirectory())
- {
- throw new IllegalArgumentException("xml file is not valid!");
- }
- SAXReader saxReader = new SAXReader();
- doc = saxReader.read(file);
- }
- /**
- * 方法完成xml格式字符串的加载,转换成xml文档形式,注意参数必须符合xml格式,
- * 否则后续操作会出错
- * @param contents xml格式的字符串
- * @throws Exception
- */
- public void loadFromString(String contents)throws Exception
- {
- //参数无效
- if (contents == null || contents.trim().length() == 0)
- {
- throw new IllegalArgumentException("argument is not valid!");
- }
- doc = DocumentHelper.parseText(contents);
- }
- /**
- * 方法执行xml文档的保存
- * @param filePath xml文件保存路径
- * @param encoding xml文件编码格式(gb2312|utf-8|gbk等)
- * @throws IOException
- * @throws Exception
- */
- public void dump(String filePath, String encoding)throws IOException, Exception
- {
- //参数无效
- if (filePath == null || filePath.trim().length() == 0)
- {
- throw new IllegalArgumentException("store path is not valid!");
- }
- encoding = (encoding == null || encoding.trim().length() == 0) ? "gb2312" : encoding;
- OutputFormat format = OutputFormat.createPrettyPrint();
- format.setEncoding(encoding);
- format.setIndent(" ");
- FileWriter fileWriter = new FileWriter(filePath);
- XMLWriter xmlWriter = new XMLWriter(fileWriter, format);
- try
- {
- xmlWriter.write(doc);
- }
- catch(Exception e)
- {
- throw e;
- }
- finally
- {
- xmlWriter.close();
- xmlWriter = null;
- fileWriter.close();
- fileWriter = null;
- }
- }
- /**
- * 方法获取单个指定节点名的节点
- * @param name 节点名,支持Xpath
- * @param index 节点出现的索引位置
- * @return 找到返回Element,没找到返回null.
- * @throws Exception
- */
- public Element getElement(String name, int index)throws Exception
- {
- //节点名无效
- if (!isValidate(name))
- {
- throw new IllegalArgumentException("the element's name is not valid!");
- }
- //索引位置无效
- if (index < 0)
- {
- throw new IllegalArgumentException("the element's index is not valid!");
- }
- List elementsList = doc.selectNodes("//" + name);
- //指定的节点名存在并且索引有效
- if (elementsList != null && elementsList.size() > index)
- {
- return (Element)elementsList.get(index);
- }
- return null;
- }
- /**
- * 方法获取指定节点名的节点list
- * @param name 节点名
- * @return 节点list
- * @throws Exception
- */
- public ArrayList getElements(String name)throws Exception
- {
- //节点名无效
- if (!isValidate(name))
- {
- throw new IllegalArgumentException("element name is not valid!");
- }
- List list = doc.selectNodes("//" + name);
- ArrayList <Element>arrayList = new ArrayList<Element>();
- //存在节点时,循环获取每一个节点
- if (list != null)
- {
- int length = list.size();
- for (int i = 0; i < length; i++)
- {
- Node node = (Node)list.get(i);
- //节点是element实例时,添加到arrayList
- if (node instanceof Element)
- {
- arrayList.add((Element)node);
- }
- }
- }
- return arrayList;
- }
- /**
- * 方法获取一个节点的子节点信息
- * @param element 节点
- * @param subElementName 子节点名称
- * @return 子节点list,每个list元素是一个Element
- * @throws Exception
- */
- public ArrayList getSubElements(Element element, String subElementName)throws Exception
- {
- //参数无效
- if (element == null)
- {
- throw new IllegalArgumentException("element is null!");
- }
- //参数无效
- if (!isValidate(subElementName))
- {
- throw new IllegalArgumentException("sub element name is invalid!");
- }
- return (ArrayList)element.elements(subElementName);
- }
- /**
- * 方法获取单个节点值
- * @param name 节点名
- * @return 节点值
- * @throws Exception
- */
- public String getElementValue(String name)throws Exception
- {
- //invalid argument
- if (!isValidate(name))
- {
- throw new IllegalArgumentException("argument is not valid!");
- }
- Node node = doc.selectSingleNode("//" + name);
- //return the value
- if (node instanceof Element)
- {
- return node.getText().trim();
- }
- return "";
- }
- /**
- * 方法获取指定节点名的节点值的properties,重复的节点值将过滤掉
- * @param name 节点名
- * @return 节点值properties
- * @throws Exception
- */
- public Properties getElementValues(String name)throws Exception
- {
- if (!isValidate(name))
- {
- throw new IllegalArgumentException("elememt name is not valid!");
- }
- List elementList = doc.selectNodes("//" + name);
- Properties properties = new Properties();
- //节点存在
- if (elementList != null && elementList.size() > 0)
- {
- int length = elementList.size();
- for (int i = 0; i < length; i++)
- {
- String elementValue = ((Element)elementList.get(i)).getTextTrim();
- properties.put(elementValue, elementValue);
- }
- return properties;
- }
- return properties;
- }
- /**
- * 方法返回指定节点的属性信息
- * @param element 节点
- * @return 以name,value形式存在的属性
- * @throws Exception
- */
- public Properties getElementProperties(Element element)throws Exception
- {
- //参数无效
- if (element == null)
- {
- throw new IllegalArgumentException("element is null!");
- }
- List attributes = element.attributes();
- Properties properties = new Properties();
- for (int i = 0; i < attributes.size(); i++)
- {
- Attribute attr = (Attribute)attributes.get(i);
- properties.put(attr.getName(), attr.getValue());
- }
- return properties;
- }
- /**
- * 方法返回节点的属性信息
- * @param elementName 节点名称
- * @return 以name,value形式存在的属性
- * @throws Exception
- */
- public Properties getElementProperties(String elementName)throws Exception
- {
- //参数无效
- if (!isValidate(elementName))
- {
- throw new IllegalArgumentException("element name is invalid!");
- }
- return this.getElementProperties(this.getElement(elementName, 0));
- }
- /**
- * 方法执行节点名的更改
- * @param oldName 原始节点名
- * @param newName 更改后节点名
- * @param index 要更改的节点索引(索引指在xml文件中节点出现的位置)
- * @throws Exception
- */
- public void renameElement(String oldName, String newName, int index)throws Exception
- {
- //原始节点名无效
- if (!isValidate(oldName))
- {
- throw new IllegalArgumentException("original element name is not valid!");
- }
- //新的节点名无效
- if (!isValidate(newName))
- {
- throw new IllegalArgumentException("new element name is not valid!");
- }
- Element element = getElement(oldName, index);
- //指定的节点不存在
- if (element == null)
- {
- throw new Exception("can not find element, which name is : " + oldName
- + " index is : " + index);
- }
- element.setName(newName);
- }
- /**
- * 方法执行节点名的更改
- * @param oldName 原始节点名
- * @param newName 更改后节点名
- * @throws Exception
- */
- public void renameElements(String oldName, String newName)throws Exception
- {
- //原始节点名无效
- if (!isValidate(oldName))
- {
- throw new IllegalArgumentException("original element name is not valid!");
- }
- //新的节点名无效
- if (!isValidate(newName))
- {
- throw new IllegalArgumentException("new element name is not valid!");
- }
- ArrayList list = getElements(oldName);
- //不存在该节点名
- if (list == null)
- {
- throw new Exception("can not find any element, which name is : " + oldName);
- }
- //循环更改节点名
- int length = list.size();
- for (int i = 0; i < length; i++)
- {
- ((Element)list.get(i)).setName(newName);
- }
- }
- /**
- * 方法执行子节点的添加,要添加的子节点必须存在父节点,添加子节点的属性可以为空。
- * @param parent 父节点名
- * @param index 父节点的索引(存在同名父节点时,在第index个父节点处添加子节点)
- * @param current 子节点名
- * @param currentValue 子节点值
- * @param attributes 子节点属性
- * @throws Exception
- */
- public void addSubElement(String parent, int index, String current, String currentValue,
- Properties attributes)throws Exception
- {
- //父节点无效
- if (!isValidate(parent))
- {
- throw new IllegalArgumentException("parent element is not valid!");
- }
- //当前节点无效
- if (!isValidate(current))
- {
- throw new IllegalArgumentException("current element is not valid!");
- }
- Element parentElement = getElement(parent, index);
- //指定的父节点不存在
- if (parentElement == null)
- {
- throw new Exception("can not find the specified parent element, which name is :"
- + parent);
- }
- Element currentElement = parentElement.addElement(current);
- //节点值有效
- if (currentValue != null && currentValue.length() > 0)
- {
- currentElement.setText(currentValue);
- }
- //存在属性时,添加节点属性
- if (attributes != null)
- {
- Enumeration e = attributes.keys();
- while (e.hasMoreElements())
- {
- Object attrName = e.nextElement();
- Object attrValue = attributes.get(attrName);
- currentElement.addAttribute(attrName.toString(), attrValue.toString());
- }
- }
- }
- /**
- * 方法执行子节点的添加,要添加的子节点必须存在父节点,
- * @param parent 父节点名
- * @param index 父节点在xml文档中的索引
- * @param childList 子节点list,每个list元素是一个Element
- * @throws Exception
- */
- public void addSubElements(String parent, int index, ArrayList childList)
- throws Exception
- {
- Element parentElement = getElement(parent, index);
- //指定的父节点不存在
发表评论
-
常用的文件操作方法
2007-12-08 15:22 1446java 代码 import ja ... -
操作excel文件,从文件中读取数据。
2007-12-08 15:14 1886java 代码 import or ... -
Subversion之路---实现精细的目录访问权限控制(转载)
2007-11-02 09:34 19511.1 Subversion 权限简介在 ... -
freemarker+velocity+jsf+spring+hibernate 初探一
2007-09-20 19:21 2601喜欢架构方面的东西,在一年多以前就开始接触freem ... -
java导出Excel 玩玩吧!
2007-09-08 13:17 10519java 代码 /* * Gene ... -
java打印word的分享
2007-09-08 13:09 4258大有有兴趣,下来玩玩吧! 有心得多分享哦! -
少走弯路的十条忠告
2007-09-08 12:52 824如何在涉世之初少走弯路,有一个好的开端,开始一番成功的事业? ... -
OutJavaScript
2007-09-03 20:43 1221java 代码 package com.axon ... -
程序中调用批处理执行Mysql数据库导入导出
2007-09-03 20:39 1930/** * @param cmdStr ... -
hibernate配置
2007-09-03 20:35 811"-//Hibernate/ ... -
struts+hibernate+spring+FreeMarker 2
2007-09-01 21:03 1538自动生成几个文件: 并且,spring的applic ... -
struts+hibernate+spring+FreeMarker
2007-09-01 21:00 920这几天把hibernate和spring好好看了下,再想想st ...
相关推荐
在Java编程中,更新XML文档是一项常见的任务,尤其是在处理数据存储、配置文件或者与Web服务交互时。本文主要探讨了四种常用的方法,并分析了它们的优缺点。首先,让我们逐一了解这些方法。 方法一:直接读写XML...
"java解析xml文档的常用方法" Java 解析 XML 文档的常用方法有四种:DOM、SAX、JDOM 和 DOM4J。下面对这四种方法进行详细的介绍: 1. 使用 DOM(JAXP Crimson 解析器) DOM(Document Object Model)是一种以层次...
使用`Save`方法将XML文档保存到文件: ```csharp xdoc.Save(Server.MapPath("data.xml")); ``` 上述代码将创建一个包含两个相同`<Node>`元素的XML文件,每个`<Node>`都有属性、子元素`<title>`、`<author>`和`...
XmlDocument类是System.Xml命名空间下的一个类,提供了对XML文档的操作方法。例如,在上面的代码中,我们使用了XmlDocument类来读取"titles.xml"文件,并追加了新的数据到文件中。 三、读取数据 在C#中,可以使用...
在C#中,操作XML文件是一项常见的任务,用于读取、写入或修改XML文档。XML(可扩展标记语言)是一种结构化数据格式,广泛应用于数据交换和存储。以下是使用C#操作XML文件的一些基本方法,主要涉及`System.Xml`命名...
1. **XmlDocument**: 用于加载、操作和保存XML文档。它提供了一种基于DOM(Document Object Model)的处理方式,允许你遍历整个XML树并进行修改。 2. **XmlReader/XmlWriter**: 提供了基于SAX(Simple API for XML...
以下是对"TCL操作XML文档"这一主题的详细解析。 首先,让我们了解TCL如何与XML进行交互。TCL中通常使用TDOM库来解析和操作XML文档。TDOM(Tcl Dom)是TCL的一个扩展,它提供了对XML文档对象模型(DOM)的支持。DOM...
XML文档的基本结构由XML声明开始,例如`<?xml version="1.0" encoding="gb2312"?>`。此声明定义了文档的版本、编码格式,并可选择性地指定是否独立于外部DTD(文档类型定义)。XML文档通常包含元素,如在案例`9-01....
除了`XmlDocument`和LINQ to XML,C#还有其他处理XML的类,如`XmlReader`(只读、向前只读的XML解析器)和`XmlWriter`(用于创建XML文档)。`XmlSerializer`类用于XML序列化和反序列化对象,使得对象和XML之间的转换...
3. **DOM(Document Object Model)模型**:DOM是XML文档的一种表示方式,它将XML文件转化为一棵可以被程序操作的对象树。C语言中,通过`libxml2`库可以创建和操作DOM树。 4. **SAX(Simple API for XML)事件驱动...
在对XML文档进行操作后,使用`Save`方法保存更改: ```csharp doc.Save("path_to_your_xml_file.xml"); ``` 在实际应用中,还可以使用更高级的XML处理类,如`XDocument`(LINQ to XML),它提供了更简洁的API和...
它可以自动将XML文档转换为Java对象,反之亦然。适合于需要将XML数据与Java对象进行绑定的情况。 ```java JAXBContext context = JAXBContext.newInstance(MyObject.class); Unmarshaller unmarshaller = ...
DOM是另一种常用的XML解析方法,它将整个XML文档加载到一个树形结构中,每个节点代表XML文档的一部分。开发者可以像遍历二叉树一样遍历XML文档,查找、修改或添加元素。DOM的优点是使用方便,支持随机访问,但缺点是...
本篇文章将详细介绍C#处理XML的三种方法,包括读取XML数据、对数据库进行操作以及修改XML节点。 首先,我们来探讨第一种方法:读取XML文件。在C#中,我们可以使用System.Xml命名空间下的类来实现这一功能。最常用的...
本文将深入探讨如何使用C#进行XML文件的操作,包括读取、写入、修改和解析XML文档。 首先,我们需要了解C#中的System.Xml命名空间,它提供了处理XML文档的各种类。最常用的是XmlDocument和XmlNode类,它们允许我们...
导入XML文件到Java程序中,通常涉及解析XML文档。Java提供了多种解析器,如DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API for XML)。DOM解析器将整个XML文档加载到内存中的树形...
本篇文章将详细探讨C#在处理XML文件时的一些常用操作方法,这些方法来源于实际的系统开发和软件项目实施经验的积累。 1. **读取XML文件** - `XmlDocument` 类:通过`Load`方法加载XML文件,然后可以使用DOM模型...
- **XPath**:XPath是XML路径语言,用于选取XML文档中的节点。C#中的XPathNavigator类提供了基于XPath的查询功能。 - **LINQ to XML**:.NET Framework 3.5引入了LINQ(Language Integrated Query),提供了更直观、...
在MATLAB中操作XML文件时,需要首先使用xmlread函数将XML文件读取到DOM节点,然后使用DOM节点提供的方法来操作XML文档,最后使用xmlwrite函数将DOM节点写入到XML文件中。 MATLAB提供了方便的函数来操作XML文件,...
查询XML节点最常用的方法是XPath表达式,它是一种强大的语言,可以定位XML文档中的任意节点。例如,以下代码会找到所有`<item>`元素: ```csharp XmlNodeList itemList = doc.SelectNodes("//item"); foreach ...