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);
}
}
相关推荐
在C#中,`XMLHelper`类提供了一系列方法来处理XML文档,包括创建、读取和修改XML文件。 #### 类定义与初始化 `XMLHelper`类在`XMLHelper.cs`文件中定义,使用了`System.Xml`命名空间,这表明它将利用.NET Framework...
总结来说,XMLHelper是简化XML操作的工具类,它通过封装常见的XML处理任务,使得开发者能更高效、简洁地处理XML数据。在你的项目中,只需要引入这个类库,就可以轻松实现XML的解析、创建、修改等操作,提升开发效率...
c# XMLHelper xml操作类
"XMLHelper 封装类"是针对XML操作进行封装的一个工具类,旨在简化XML的读写操作,提高开发效率。以下将详细介绍XMLHelper类可能包含的功能和使用方法。 1. **XML解析**:XMLHelper可能包含了对XML文档的解析功能,...
XMLHelper是一个C#编写的类,用于处理XML文档的各种操作,包括读取、修改、删除、新增和创建XML元素。这个类设计为一个基类,可以被继承以实现更具体的功能。以下是XMLHelper类的一些核心知识点和功能: 1. **XML...
这个XMLHelper类集成了XML的解析、序列化和反序列化功能,方便开发者快速便捷地操作XML数据。 1. **XML解析**:XMLHelper可能包含解析XML文档的方法,如LoadXml方法,它能够读取XML文件或字符串,并将其转换为Xml...
本资料"XMLHelper"是针对C#操作XML的一个经典源码实例,旨在帮助开发者熟练掌握XML相关的编程技巧。 XML的基本结构包括元素(Element)、属性(Attribute)、文本内容(Text Content)、注释(Comment)、处理指令...
xml操作类,封装操作方法,可以直接调用直接对xml节点、元素进行增删改查操作
最近开发用到了XML配置参数,比起Config方便很多,晚上整理了一下代码,给大家做了个Demo分享一下 1、自动添加多级子节点,如果存在则在后面增加Element... 5、自动读取XML内的所有内容 6、自动生成XML文件及root节点
通过这样的“XmlHelper”类库,开发者可以更方便地管理XML文件,避免了直接操作XML字符串可能导致的错误和复杂性。在实际项目中,可以根据需要扩展这个类库,添加更多定制化的操作,提高开发效率和代码的可维护性。
六、XML Helper工具的功能 1. 解析XML:读取XML文档并转化为内存中的对象结构。 2. 生成XML:将内存中的数据结构转换为XML文档。 3. 验证XML:根据指定的DTD或XML Schema检查XML文档的语法和结构。 4. 搜索和替换:...
XPath路径表达式选取XML节点.doc 为XML中常用... XmlHelper.CS 一个类文件 包括对XML 文件的常规操作 xml字符串转换为dataTable DataTable 转换为xml 找出所有与pPath匹配路径的节点创建dataTable,并设置主键 等功能
XmlHelper 是一个专门为处理XML文档而设计的辅助类,它提供了方便的方法来...总之,XmlHelper 是一个强大的工具,能够帮助开发者更高效地处理XML数据。理解其核心功能和用法,可以大大提高XML操作的效率和代码质量。
然而,为了提高代码复用性和易用性,我们可以创建一个名为`XmlHelper`的通用类,集中处理XML文件的读取、解析和操作。 以下是一个简单的`XmlHelper`类的实现: ```csharp using System; using System.IO; using ...
`XmlHelper`可能使用了其中一个或两个类来创建和操作XML文档。这两个类各有优势,`XDocument`更易用,而`XmlDocument`更接近DOM模型,支持更多的XML规范。 2. **添加XML根节点**:根节点是XML文档的顶级元素,通常...
综上所述,`XmlHelper`是一个实用的工具类,它封装了C#中处理XML文件的常见操作,为开发者提供了一种简便的方式来管理和操作XML数据。通过理解和运用这些知识点,可以更加高效地在C#项目中实现XML文件的管理功能。
这两个类是.NET框架中处理XML的主要类,提供了丰富的API来解析和操作XML文档。 2. **写入XML文件**:`SaveXmlToFile` 方法用于将XML文档保存到指定的文件路径。这个方法可能接收一个 `XmlDocument` 或 `XDocument` ...
本篇将深入探讨如何使用C#进行XML文件的操作,包括读取、写入、解析、修改和创建XML文档。 首先,我们需要引入System.Xml命名空间,它包含了处理XML文档所需的所有类和方法。例如: ```csharp using System.Xml; `...