`
lovelease
  • 浏览: 387970 次
社区版块
存档分类
最新评论

XML解析工具类

阅读更多
这是一个接收xml格式的string,并进行解析的工具类。
注:该工具类参考了其他网友的代码,链接忘了。

package com.jackie.mytestproject.xmltest;

import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;

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

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

/**
 * @author jackie
 *
 */
public class XMLBuilder {

	/** xml string */
    private String xmlStr=null;
    /** xml对应的document */
    private Document doc=null;
    /** xml根结点 */
    private Element root=null;
    
    /**
     *构造函数说明:       <p>
     *参数说明:@param path   <p>
     * @throws IOException 
     * @throws SAXException 
     * @throws ParserConfigurationException 
    **/
    public XMLBuilder(String xmlStr) throws ParserConfigurationException, SAXException, IOException
    {
        this.xmlStr=xmlStr;
        doc = getDocument(xmlStr);
        buildRoot();
    }
      
    public Document getDocument(String xml) throws ParserConfigurationException, SAXException, IOException {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		DocumentBuilder builder = factory.newDocumentBuilder();
		StringReader sr = new StringReader(xml);
		InputSource is = new InputSource(sr);
		Document doc = builder.parse(is);
        return doc;
    }
      
    /**
    * 方法名称:buildRoot<p>
    * 方法功能:生成XML的根结点<p>
    * 参数说明: <p>
    * 返回:void <p>
    **/
    private void buildRoot()
    {
        root=doc.getDocumentElement();
    }
    
    public NodeList getNodeList()
    {
        return root.getChildNodes();
    }
    
    public Element [] getElementsByName(String name)
    {
        List<Node> resList=new ArrayList<Node>();
        NodeList nl=getNodeList();
        for(int i=0;i<nl.getLength();i++)
        {
            Node nd=nl.item(i);
            if(nd.getNodeName().equals(name))
            {
                resList.add(nd);
            }
        }
        Element [] res=new Element [resList.size()];
        for(int i=0;i<resList.size();i++)
        {
            res[0]=(Element)resList.get(i);
        }
        return res;
    }
      
    public static String getElementName(Element element)
    {
        return element.getNodeName();
    }
    
    public String getElementValue(Element element)
    {
        NodeList nl=element.getChildNodes();
        for(int i=0;i<nl.getLength();i++)
        {
            if(nl.item(i).getNodeType()==Node.TEXT_NODE)//是一个Text Node
            {            
                return element.getFirstChild().getNodeValue();
            }
        }   
        return null;
    }
    
    public String getElementAttr(Element element,String attr)
    {
        return element.getAttribute(attr);
    }
    
    /**
     * @return 返回 doc。
     */
    public Document getDoc()
    {
        return doc;
    }
    /**
     * @param doc 要设置的 doc。
     */
    public void setDoc(Document doc)
    {
        this.doc = doc;
    }
    /**
     * @return 返回 xmlStr。
     */
    public String getXmlStr()
    {
        return xmlStr;
    }
    /**
     * @param path 要设置的 xmlStr。
     */
    public void setXmlStr(String xmlStr)
    {
        this.xmlStr = xmlStr;
    }
    /**
     * @return 返回 root。
     */
    public Element getRoot()
    {
        return root;
    }
    /**
     * @param root 要设置的 root。
     */
    public void setRoot(Element root)
    {
        this.root = root;
    }
}



测试类:
package com.jackie.mytestproject.xmltest;

import org.w3c.dom.Element;

public class XMLBuilderTester {

	public static void main(String[] args) {
		try {
			StringBuffer sb = new StringBuffer();
			sb.append("<MSG type=\"msg\" sequence=\"\" calltype=\"\">");
			sb.append("<Result code=\"0\" attr=\"test\" attr2=\"\" attr3=\"\" attr4=\"\"/>");
			sb.append("</MSG>");
			String xml = sb.toString();
			
			XMLBuilder xmlBl = new XMLBuilder(xml);
			Element[] eList = xmlBl.getElementsByName("Result");
			System.out.println(xmlBl.getElementValue(eList[0]));
			System.out.println(xmlBl.getElementAttr(eList[0], "attr"));
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
}

分享到:
评论

相关推荐

    java xml解析工具类 java xml解析工具类

    java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析...

    xml解析工具类

    本教程将详细介绍一个名为"WXML"的XML解析工具类,该工具类能便捷地将XML数据转换为Java对象,从而简化开发流程。 首先,XML解析分为两种主要方式:DOM(Document Object Model)和SAX(Simple API for XML)。DOM...

    XmlUtils.java XML解析工具类

    XML解析工具类

    Android xml 解析工具类

    Android XML 解析工具类 Android XML 解析工具类是一个功能强大且实用的工具类,提供了多种方法来解析 XML 文档。该工具类提供了四种方法来获取 XML 节点的内容,分别是 getMarkString、getMarkString、...

    XML通用解析工具类

    XML解析工具有多种类型,包括DOM(Document Object Model)、SAX(Simple API for XML)、StAX(Streaming API for XML)以及XPath和XSLT等。每种解析方式有其优缺点,适用于不同的场景。 1. DOM解析器:它将整个...

    java通用解析XML工具类

    本文将详细介绍如何创建一个Java通用的XML解析工具类,以便于在项目中复用和简化XML处理。 首先,我们来看DOM解析方式。DOM解析器会将整个XML文档加载到内存中,形成一棵树形结构,便于对XML进行随机访问。以下是一...

    Java解析XML工具类--(java源码)

    * 本类是专门解析XML文件的,主要用于为系统读取自己的配置文件时提供最方便的解析操作 * @author HX * */ public class XmlManager { /** * 得到某节点下某个属性的值 * @param element 要获取属性的...

    jdom1.1.3xml解析工具类

    org.jdom包含了所有的xml文档要素的java类 org.jdom.adapters包含了与dom适配的java类 org.jdom.filter包含了xml文档的过滤器类 org.jdom.input包含了读取xml文档的类 org.jdom.output包含了写入xml文档的类 org....

    DOM4J xml解析工具

    DOM4J作为XML解析工具,其核心功能包括: 1. **解析XML文档**:DOM4J可以使用SAX或DOM方式解析XML文件。SAX是事件驱动的解析器,适用于大文件,而DOM解析会将整个文档加载到内存,适合小文件。DOM4J的灵活性在于,...

    自己写的一个dom4j解析xml文件工具类

    自己写的一个dom4j解析xml文件工具类

    XML解析工具

    读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好。 TinyXML是一个开源的解析XML的解析库,能够用于C++,...

    vtd-xml XML解析工具

    VTD-XML是一款高效、灵活且功能强大的XML解析工具,由XimpleWare公司开发。它在XML处理领域中因其性能优异、内存占用低而受到广泛关注。"多快好省地建设社会主义"这句话虽然是一种比喻,但形象地表达了VTD-XML在处理...

    symbian XML解析 用的是系统的自带XML解析工具

    系统自带的XML解析工具是Symbian平台的重要组成部分,它提供了处理XML文档的功能,使得应用程序能够读取、写入和操作XML数据。这个工具的使用对于开发在Symbian平台上运行的应用程序来说至关重要,尤其是那些需要...

    XmlUtils.java xml解析工具包

    XML交互时方便进行XML格式转换,包含XML格式数据转换成list对象方法,参数拼接成XML方法

    windows平台XML解析工具

    Windows平台提供了多种XML解析工具,这些工具帮助开发者快速、高效地解析和查看XML文档,确保数据的准确性和完整性。本文将详细介绍Windows平台下的一款XML解析工具——foxe_CHS.exe,它是专为中文用户设计的版本。 ...

    XML读写工具类

    本人没分了,特别来分享一下,通用的XML读写工具类,同志们下下绝对不后悔

    XML报文解析工具

    这个XML解析工具具有以下几个关键特性: 1. **小巧的体积**:由于嵌入式系统的资源限制,该工具特别注重代码大小。它通过优化算法和数据结构,使得在保持功能完整的同时,尽可能减少存储空间的需求,适应了STM32这...

Global site tag (gtag.js) - Google Analytics