`
zfw198787
  • 浏览: 7248 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

读取xml工具XMLHelper

 
阅读更多

package com.thinkive.base.util;

 

import java.io.File;

import java.io.FileWriter;

import java.io.IOException;

import java.io.InputStream;

import java.io.StringReader;

import java.io.StringWriter;

import java.net.URL;

import java.util.Properties;

 

import javax.xml.transform.OutputKeys;

import javax.xml.transform.Result;

import javax.xml.transform.Source;

import javax.xml.transform.Transformer;

import javax.xml.transform.TransformerFactory;

import javax.xml.transform.stream.StreamResult;

import javax.xml.transform.stream.StreamSource;

 

import org.apache.log4j.Logger;

import org.dom4j.Document;

import org.dom4j.Element;

import org.dom4j.io.OutputFormat;

import org.dom4j.io.SAXReader;

import org.dom4j.io.XMLWriter;

 

 

public final class XMLHelper

{

 

private static Logger logger = Logger.getLogger(XMLHelper.class);

 

/**

* 把XML按照给定的XSL进行转换,返回转换后的值

*

* @param xml xml

* @param xsl xsl

* @return

* @throws Exception

*/

public static String xml2xsl(String xml, URL xsl) throws Exception

{

if (StringHelper.isEmpty(xml))

{

throw new Exception("xml string is empty");

}

if (xsl == null)

{

throw new Exception("xsl string is empty");

}

 

StringWriter writer = new StringWriter();

Source xmlSource = null;

Source xslSource = null;

Result result = null;

 

try

{

xmlSource = new StreamSource(new StringReader(xml));

xslSource = new StreamSource(xsl.openStream());

result = new StreamResult(writer);

 

TransformerFactory transFact = TransformerFactory.newInstance();

Transformer trans = transFact.newTransformer(xslSource);

trans.transform(xmlSource, result);

return writer.toString();

}

catch (Exception ex)

{

throw new Exception(ex);

}

finally

{

writer.close();

writer = null;

xmlSource = null;

xslSource = null;

result = null;

}

}

 

/**

* 把XML按用户定义好的XSL样式进行输出

*

* @param xmlFilePath XML文档

* @param xsl         XSL样式

* @return 样式化后的字段串

*/

public static String xml2xsl(String xmlFilePath, String xsl) throws Exception

{

if (StringHelper.isEmpty(xmlFilePath))

{

throw new Exception("xml string is empty");

}

if (StringHelper.isEmpty(xsl))

{

throw new Exception("xsl string is empty");

}

 

StringWriter writer = new StringWriter();

Source xmlSource = new StreamSource(new File(xmlFilePath));

Source xslSource = new StreamSource(new File(xsl));

Result result = new StreamResult(writer);

 

try

{

TransformerFactory transFact = TransformerFactory.newInstance();

Transformer trans = transFact.newTransformer(xslSource);

Properties properties = trans.getOutputProperties();

properties.setProperty(OutputKeys.ENCODING, "gb2312");

properties.put(OutputKeys.METHOD, "html");

trans.setOutputProperties(properties);

 

trans.transform(xmlSource, result);

return writer.toString();

}

catch (Exception ex)

{

System.out.println("xml2xsl:" + ex);

throw new Exception(ex);

}

finally

{

writer.close();

writer = null;

 

xmlSource = null;

xslSource = null;

result = null;

}

}

 

/**

* 读取XML文档,返回Document对象.<br>

*

* @param xmlFile XML文件路径

* @return Document 对象

*/

public static Document getDocument(String xmlFile) throws Exception

{

if (StringHelper.isEmpty(xmlFile))

{

return null;

}

 

File file = null;

SAXReader saxReader = new SAXReader();

 

file = new File(xmlFile);

return saxReader.read(file);

}

 

/**

* 读取XML文档,返回Document对象.<br>

*

* @param xmlFile file对象

* @return Document 对象

*/

public static Document getDocument(File xmlFile)

{

try

{

SAXReader saxReader = new SAXReader();

return saxReader.read(xmlFile);

}

catch (Exception ex)

{

return null;

}

}

 

/**

* 描述:读取XML文档,先从指定的位置读取,没有再通过文件流读取(读jar包的配置文件)

* 时间:2015-5-15 下午9:13:12

* @param cls

* @param propFile

* @return

*/

public static Document getDocument(Class cls, String xmlFile)

{

Document document = null;

File file = PropHelper.guessPropFile(cls, xmlFile);

if (file != null && file.exists() && file.isFile())

{

document = XMLHelper.getDocument(file);

}

else

{

InputStream ins = null;

try

{

//得到类的类装载器

ClassLoader loader = cls.getClassLoader();

if (loader != null)

{

//先从当前类所处路径的根目录中寻找属性文件

ins = loader.getResourceAsStream(xmlFile);

}

 

if (ins != null)

{

SAXReader reader = new SAXReader();

document = reader.read(ins);

}

}

catch (Exception ex)

{

logger.error("", ex);

}

finally

{

if (ins != null)

{

try

{

ins.close();

ins = null;

}

catch (IOException e)

{

logger.error("", e);

}

}

}

}

return document;

}

 

/**

* 读取XML字串,返回Document对象

*

* @param xmlString XML文件路径

* @return Document 对象

*/

public static Document getDocumentFromString(String xmlString)

{

if (StringHelper.isEmpty(xmlString))

{

return null;

}

try

{

SAXReader saxReader = new SAXReader();

return saxReader.read(new StringReader(xmlString));

}

catch (Exception ex)

{

return null;

}

}

 

/**

* 描述:把xml输出成为html

* 作者:

* 时间:Oct 29, 2008 4:57:56 PM

* @param xmlDoc xmlDoc

* @param xslFile xslFile

* @param encoding 编码

* @return

* @throws Exception

*/

public static String xml2html(String xmlDoc, String xslFile, String encoding) throws Exception

{

if (StringHelper.isEmpty(xmlDoc))

{

throw new Exception("xml string is empty");

}

if (StringHelper.isEmpty(xslFile))

{

throw new Exception("xslt file is empty");

}

 

StringWriter writer = new StringWriter();

Source xmlSource = null;

Source xslSource = null;

Result result = null;

String html = null;

try

{

xmlSource = new StreamSource(new StringReader(xmlDoc));

xslSource = new StreamSource(new File(xslFile));

 

result = new StreamResult(writer);

 

TransformerFactory transFact = TransformerFactory.newInstance();

Transformer trans = transFact.newTransformer(xslSource);

Properties properties = trans.getOutputProperties();

properties.put(OutputKeys.METHOD, "html");

properties.setProperty(OutputKeys.ENCODING, encoding);

trans.setOutputProperties(properties);

 

trans.transform(xmlSource, result);

 

html = writer.toString();

writer.close();

 

return html;

}

catch (Exception ex)

{

throw new Exception(ex);

}

finally

{

writer = null;

 

xmlSource = null;

xslSource = null;

result = null;

}

}

 

/**

* 描述:把xml输出成为html

* 作者:

* 时间:Oct 29, 2008 4:58:48 PM

* @param xmlFile xmlFile

* @param xslFile xslFile

* @param encoding 编码

* @return

* @throws Exception

*/

public static String xmlFile2html(String xmlFile, String xslFile, String encoding) throws Exception

{

if (StringHelper.isEmpty(xmlFile))

{

throw new Exception("xml string is empty");

}

if (StringHelper.isEmpty(xslFile))

{

throw new Exception("xslt file is empty");

}

 

StringWriter writer = new StringWriter();

Source xmlSource = null;

Source xslSource = null;

Result result = null;

String html = null;

try

{

xmlSource = new StreamSource(new File(xmlFile));

xslSource = new StreamSource(new File(xslFile));

 

result = new StreamResult(writer);

 

TransformerFactory transFact = TransformerFactory.newInstance();

Transformer trans = transFact.newTransformer(xslSource);

Properties properties = trans.getOutputProperties();

properties.put(OutputKeys.METHOD, "html");

properties.setProperty(OutputKeys.ENCODING, encoding);

trans.setOutputProperties(properties);

 

trans.transform(xmlSource, result);

 

html = writer.toString();

writer.close();

 

return html;

}

catch (Exception ex)

{

throw new Exception(ex);

}

finally

{

writer = null;

 

xmlSource = null;

xslSource = null;

result = null;

}

}

 

/**

* 描述:

* 作者:

* 时间:Oct 29, 2008 5:00:10 PM

* @param name 名

* @param element 元素

* @return

*/

public static String getString(String name, Element element)

{

return (element.valueOf(name) == null) ? "" : element.valueOf(name);

}

 

/**

* 将一个XML文档保存至文件中.

*

* @param doc      要保存的XML文档对象.

* @param filePath 要保存到的文档路径.

* @param format   要保存的输出格式 

* @return true代表保存成功,否则代表不成功.

*/

public static boolean savaToFile(Document doc, String filePathName, OutputFormat format)

{

XMLWriter writer;

try

{

String filePath = FileHelper.getFullPath(filePathName);

//若目录不存在,则建立目录

if (!FileHelper.exists(filePath))

{

if (!FileHelper.createDirectory(filePath))

{

return false;

}

}

 

writer = new XMLWriter(new FileWriter(new File(filePathName)), format);

writer.write(doc);

writer.close();

return true;

}

catch (IOException ex)

{

}

 

return false;

}

 

/**

* 将一个XML文档保存至文件中.

*

* @param filePath 要保存到的文档路径.

* @param doc      要保存的XML文档对象.

* @return true代表保存成功,否则代表不成功.

*/

public static boolean writeToXml(String filePathName, Document doc)

{

OutputFormat format = OutputFormat.createCompactFormat();

format.setEncoding("GBK");

return savaToFile(doc, filePathName, format);

}

}

 

分享到:
评论

相关推荐

    XMLHelper XMLHelper

    在C#中,`XMLHelper`类提供了一系列方法来处理XML文档,包括创建、读取和修改XML文件。 #### 类定义与初始化 `XMLHelper`类在`XMLHelper.cs`文件中定义,使用了`System.Xml`命名空间,这表明它将利用.NET Framework...

    XMLHelper操作类、引用就可以使用

    总结来说,XMLHelper是简化XML操作的工具类,它通过封装常见的XML处理任务,使得开发者能更高效、简洁地处理XML数据。在你的项目中,只需要引入这个类库,就可以轻松实现XML的解析、创建、修改等操作,提升开发效率...

    XMLHelper xml操作类 c#

    c# XMLHelper xml操作类

    XMLHelper 封装类

    "XMLHelper 封装类"是针对XML操作进行封装的一个工具类,旨在简化XML的读写操作,提高开发效率。以下将详细介绍XMLHelper类可能包含的功能和使用方法。 1. **XML解析**:XMLHelper可能包含了对XML文档的解析功能,...

    XMLHelper数据操作类

    XMLHelper是一个C#编写的类,用于处理XML文档的各种操作,包括读取、修改、删除、新增和创建XML元素。这个类设计为一个基类,可以被继承以实现更具体的功能。以下是XMLHelper类的一些核心知识点和功能: 1. **XML...

    xmlHelper类c#版本

    这个XMLHelper类集成了XML的解析、序列化和反序列化功能,方便开发者快速便捷地操作XML数据。 1. **XML解析**:XMLHelper可能包含解析XML文档的方法,如LoadXml方法,它能够读取XML文件或字符串,并将其转换为Xml...

    C#操作XML的经典源码(XMLHelper)

    本资料"XMLHelper"是针对C#操作XML的一个经典源码实例,旨在帮助开发者熟练掌握XML相关的编程技巧。 XML的基本结构包括元素(Element)、属性(Attribute)、文本内容(Text Content)、注释(Comment)、处理指令...

    XmlHelper操作类

    xml操作类,封装操作方法,可以直接调用直接对xml节点、元素进行增删改查操作

    操作XMLHelper遍历节点

    最近开发用到了XML配置参数,比起Config方便很多,晚上整理了一下代码,给大家做了个Demo分享一下 1、自动添加多级子节点,如果存在则在后面增加Element... 5、自动读取XML内的所有内容 6、自动生成XML文件及root节点

    关于XML的操作的类库_XmlHelper

    通过这样的“XmlHelper”类库,开发者可以更方便地管理XML文件,避免了直接操作XML字符串可能导致的错误和复杂性。在实际项目中,可以根据需要扩展这个类库,添加更多定制化的操作,提高开发效率和代码的可维护性。

    XML Helper

    六、XML Helper工具的功能 1. 解析XML:读取XML文档并转化为内存中的对象结构。 2. 生成XML:将内存中的数据结构转换为XML文档。 3. 验证XML:根据指定的DTD或XML Schema检查XML文档的语法和结构。 4. 搜索和替换:...

    XmlHelper XPath路径表达式选取XML节点

    XPath路径表达式选取XML节点.doc 为XML中常用... XmlHelper.CS 一个类文件 包括对XML 文件的常规操作 xml字符串转换为dataTable DataTable 转换为xml 找出所有与pPath匹配路径的节点创建dataTable,并设置主键 等功能

    XmlHelper_xml帮助类_

    XmlHelper 是一个专门为处理XML文档而设计的辅助类,它提供了方便的方法来...总之,XmlHelper 是一个强大的工具,能够帮助开发者更高效地处理XML数据。理解其核心功能和用法,可以大大提高XML操作的效率和代码质量。

    asp.net读取XML文件

    然而,为了提高代码复用性和易用性,我们可以创建一个名为`XmlHelper`的通用类,集中处理XML文件的读取、解析和操作。 以下是一个简单的`XmlHelper`类的实现: ```csharp using System; using System.IO; using ...

    一个非常好用的 XML 文件生成类(C# )

    `XmlHelper`可能使用了其中一个或两个类来创建和操作XML文档。这两个类各有优势,`XDocument`更易用,而`XmlDocument`更接近DOM模型,支持更多的XML规范。 2. **添加XML根节点**:根节点是XML文档的顶级元素,通常...

    (c#)XmlHelper

    综上所述,`XmlHelper`是一个实用的工具类,它封装了C#中处理XML文件的常见操作,为开发者提供了一种简便的方式来管理和操作XML数据。通过理解和运用这些知识点,可以更加高效地在C#项目中实现XML文件的管理功能。

    xmlhelper 帮助类代码

    这两个类是.NET框架中处理XML的主要类,提供了丰富的API来解析和操作XML文档。 2. **写入XML文件**:`SaveXmlToFile` 方法用于将XML文档保存到指定的文件路径。这个方法可能接收一个 `XmlDocument` 或 `XDocument` ...

    C#操作XML文件完整源码

    本篇将深入探讨如何使用C#进行XML文件的操作,包括读取、写入、解析、修改和创建XML文档。 首先,我们需要引入System.Xml命名空间,它包含了处理XML文档所需的所有类和方法。例如: ```csharp using System.Xml; `...

Global site tag (gtag.js) - Google Analytics