`

XmlHelper

    博客分类:
  • Java
 
阅读更多
import java.io.ByteArrayInputStream;
import java.io.StringWriter;
import java.util.HashMap;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.apache.xml.serialize.OutputFormat;
import org.apache.xml.serialize.XMLSerializer;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.NodeList;

public class XmlHelper {
    static public String EncodeXML(String sString)
    {
        sString = util.ReplaceText(sString, "&", "&");
        sString = util.ReplaceText(sString, "<", "&lt;");
        sString = util.ReplaceText(sString, ">", "&gt;");
        sString = util.ReplaceText(sString, "'", "&apos;");
        sString = util.ReplaceText(sString, "\"", "&quot;");
        
        return sString;   	
    }

    public String ReadSingleElementValue(
		String sXmlFile,
		String sPath) throws Exception
	{
		DocumentBuilderFactory oDocumentBuilderFactory = DocumentBuilderFactory.newInstance();
		DocumentBuilder oDocumentBuilder = oDocumentBuilderFactory.newDocumentBuilder();
		Document oDoc = oDocumentBuilder.parse(getClass().getResourceAsStream(sXmlFile));
		
		return GetElementNode(oDoc, sPath).getFirstChild().getNodeValue();
	}
	
    public String ReadSingleElementAttribute(
		String sXmlFile,
		String sPath,
		String sAttribute) throws Exception
	{
		DocumentBuilderFactory oDocumentBuilderFactory = DocumentBuilderFactory.newInstance();
		DocumentBuilder oDocumentBuilder = oDocumentBuilderFactory.newDocumentBuilder();
		Document oDoc = oDocumentBuilder.parse(getClass().getResourceAsStream(sXmlFile));
		
		return GetElementNode(oDoc, sPath).getAttribute(sAttribute);
	}

    public HashMap ReadElementsAttribute(
		String sXmlFile,
		String sPath,
		String sKeyAttribute,
		String sValueAttribute) throws Exception
	{
		DocumentBuilderFactory oDocumentBuilderFactory = DocumentBuilderFactory.newInstance();
		DocumentBuilder oDocumentBuilder = oDocumentBuilderFactory.newDocumentBuilder();
		Document oDoc = oDocumentBuilder.parse(this.getClass().getClassLoader().getResourceAsStream(sXmlFile));
		
		HashMap oResult = new HashMap();
		
		//NodeList oNodeList = oDoc.getElementsByTagName("Error");
		NodeList oNodeList = GetElementNodeList(oDoc, sPath);
		
		for (int i=0 ; i<oNodeList.getLength() ; i++)
		{
			NamedNodeMap oAttributes = oNodeList.item(i).getAttributes();
			String sKey = oAttributes.getNamedItem(sKeyAttribute).getNodeValue();
			String sValue = oAttributes.getNamedItem(sValueAttribute).getNodeValue();
			oResult.put(sKey, sValue);
		}
		
		return oResult;
	}

    public Element GetElementNode(Document oXmlDoc, String sPath)
	{
		String[] oTagList = sPath.split("/");
		Element oElement = (Element)oXmlDoc.getElementsByTagName(oTagList[0]).item(0);
		for (int i=1 ; i<oTagList.length ; i++)
		{
			oElement = (Element)oElement.getElementsByTagName(oTagList[i]).item(0);
		}	
		return oElement;
	}

    public NodeList GetElementNodeList(Document oXmlDoc, String sPath)
	{
		String[] oTagList = sPath.split("/");
		if (oTagList.length == 1)
		{
			return oXmlDoc.getElementsByTagName(oTagList[0]);
		}else
		{
			Element oElement = (Element)oXmlDoc.getElementsByTagName(oTagList[0]).item(0);
			for (int i=1 ; i<oTagList.length ; i++)
			{
				NodeList oNodeList = oElement.getElementsByTagName(oTagList[i]);
				if (i == oTagList.length - 1)
				{
					return oNodeList;
				}else
				{
					oElement = (Element)oNodeList.item(0);					
				}
			}			
		}
		return null;
	}
    
    public Document constructDocumentFromXmlString(String xml){
    	Document output = null;
    	try{
    		if(!util.isEmpty(xml)){
	    		ByteArrayInputStream xmlStream = new ByteArrayInputStream(xml.getBytes("UTF-8"));
	    		
				DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		
			    // Set namespaceAware to true to get a DOM Level 2 tree with nodes
			    // containing namesapce information.  This is necessary because the
			    // default value from JAXP 1.0 was defined to be false.
			    dbf.setNamespaceAware(true);
	
			    dbf.setValidating(false);
			    dbf.setIgnoringComments(true);
			    dbf.setIgnoringElementContentWhitespace(false);
			    dbf.setCoalescing(true);
	
			    DocumentBuilder db = dbf.newDocumentBuilder();
			    output = db.parse(xmlStream);
    		}
		} catch(Exception e){
			util.debug("Error in XML: " + xml);
			e.printStackTrace();
			output = null;
		}
		return output;
    }
    
    public Document createDocument(){
    	return this.constructDocumentFromXmlString("<documentRoot></documentRoot>");
    }
    
    public String convertDocumentToString(Document document){    	
        return convertDocumentToString(document, false);
    }
    
    public String convertDocumentToString(Document document, boolean omitXMLDeclaration){
    	if (util.isEmpty(document)) return null;
    	String output = null;
    	try{
	    	OutputFormat format = new OutputFormat(document);
	    	format.setOmitXMLDeclaration(omitXMLDeclaration);
	        StringWriter strOut = new StringWriter();
	        XMLSerializer xmls = new XMLSerializer(strOut, format);
	        xmls.serialize(document.getDocumentElement());
	        output = strOut.toString();
    	} catch(Exception e){
    		e.printStackTrace();
    	}
        return output;
    }
    
    public Element getChild(Element element, String childElementName){
    	return(Element)element.getElementsByTagName(childElementName).item(0);
    }
    
    public String getChildText(Element element, String childElementName){
    	String output = "";
    	try{
    		output = element.getElementsByTagName(childElementName).item(0).getFirstChild().getNodeValue();
    	} catch(Exception e){
    	}
    	return output;
    }
    
    public String getText(Element element){
    	String output = "";
    	try{
    		output = element.getFirstChild().getNodeValue();
    	} catch(Exception e){
    	}
    	return output;
    }
}

 

分享到:
评论

相关推荐

    XMLHelper XMLHelper

    ### XMLHelper类在C#中的应用与解析 #### 概述 XML(可扩展标记语言)是一种用于存储和传输数据的格式,它以其强大的结构化数据表示能力在各种应用程序之间进行数据交换。在C#中,`XMLHelper`类提供了一系列方法来...

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

    XMLHelper是一个方便实用的Java类库,它为开发者提供了简单易用的接口,以便处理XML文档,无需深入理解底层的DOM、SAX或StAX解析器的工作原理。下面将详细阐述XMLHelper类的使用方法以及它所涵盖的核心功能。 1. **...

    XMLHelper 封装类

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

    xmlHelper类c#版本

    XMLHelper类是C#编程语言中用于处理XML文档的一个实用工具类。XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件存储等场景。这个XMLHelper类集成了XML的解析、序列化和反...

    XMLHelper数据操作类

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

    XmlHelper帮助类

    C# XmlHelper XmlHelper帮助类

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

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

    XMLHelper xml操作类 c#

    c# XMLHelper xml操作类

    XML Helper

    在IT行业中,XML Helper是一个重要的工具,它帮助开发者解析、生成、验证和操作XML文档,使得处理XML数据变得更加便捷。下面将详细介绍XML Helper的相关知识点。 一、XML基础 XML的设计目标是传输和存储数据,而...

    关于XML的操作的类库_XmlHelper

    本文将详细讲解“XmlHelper”类库,它提供了对XML文件进行操作的功能,包括添加、删除、修改和查询等基本操作。 XML的基本结构由元素(Element)、属性(Attribute)、文本内容(Text Content)和注释(Comment)...

    XmlHelper.cs

    C#中读写XML文件的类,在项目代码中引用该类后,采用“XmlHelper.方法名”来使用

    C# XmlHelper

    XmlHelper是一个工具类,你可以调用在里面的函式来对XML档案进行Serialize or DeSerialize的存取

    c# XmlHelper类提供对XML数据库的读写下载

    XmlHelper类提供对XML数据库的读写~~~~~~~~~~~~~~~

    XmlHelper操作类

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

    操作XMLHelper遍历节点

    最近开发用到了XML配置参数,比起Config方便很多,晚上整理了一下代码,给大家做了个Demo分享一下 1、自动添加多级子节点,如果存在则在后面增加Element 2、自动删除任意子节点及后续节点 3、自动更新所有匹配...

    C# XML demo,C# XML入门,XmlHelper

    After working with a couple of XML projects for the last six months, I am ready to share a class I wrote called XmlHelper which got me through all the complexity of XML and made my life a lot simpler....

    XmlHelper_xml帮助类_

    XmlHelper 是一个专门为处理XML文档而设计的辅助类,它提供了方便的方法来创建、操作和管理XML文件。在本文中,我们将深入探讨XML基础、XmlHelper类的主要功能以及如何使用这些功能来处理XML数据。 首先,XML...

    (c#)XmlHelper

    - 使用`XmlHelper`时,开发者可以简单地调用类方法,例如:`XmlHelper.AddNode(filePath, parentNodeName, newNodeName, nodeContent)`来向XML文件添加新节点。 综上所述,`XmlHelper`是一个实用的工具类,它封装...

Global site tag (gtag.js) - Google Analytics