XMLParser 使用

原创 2016年08月31日 14:24:44

XMLParser 工具类

import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

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.SAXException;

import com.thoughtworks.xstream.XStream;
public class XMLParser {

    public static Map<String, Object> getMapFromXML(String xmlString)
            throws ParserConfigurationException, IOException, SAXException {

        // 这里用Dom的方式解析回包的最主要目的是防止API新增回包字段
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        InputStream is = Util.getStringStream(xmlString);
        Document document = builder.parse(is);

        // 获取到document里面的全部结点
        NodeList allNodes = document.getFirstChild().getChildNodes();
        Node node;
        Map<String, Object> map = new HashMap<String, Object>();
        int i = 0;
        while (i < allNodes.getLength()) {
            node = allNodes.item(i);
            if (node instanceof Element) {
                map.put(node.getNodeName(), node.getTextContent());
            }
            i++;
        }
        return map;

    }

    public static Object getObjectFromXML(String xml, Class<?> tClass) {
        // 将从API返回的XML数据映射到Java对象
        XStream xStreamForResponseData = new XStream();
        xStreamForResponseData.alias("xml", tClass);
        // xStreamForResponseData.ignoreUnknownElements();//暂时忽略掉一些新增的字段
        return xStreamForResponseData.fromXML(xml);
    }

    public static Object getObjectFromXML(String xml, String rootName,
            Class<?> tClass) {
        // 将从API返回的XML数据映射到Java对象
        XStream xStreamForResponseData = new XStream();
        xStreamForResponseData.alias(rootName, tClass);
        // xStreamForResponseData.ignoreUnknownElements();//暂时忽略掉一些新增的字段
        return xStreamForResponseData.fromXML(xml);
    }

    public static void main(String[] args) {
        Map<String, Object> map=new HashMap<String, Object>();
        String xmlstr="<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml> ";
        try {
            map=getMapFromXML(xmlstr);
            System.out.println(map);            

        } catch (ParserConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

XmlJSON 工具类

import net.sf.json.JSONObject;
import net.sf.json.xml.XMLSerializer;
public class XmlJSON {

    public static String xmlToJson(String xml) {
        XMLSerializer serializer = new XMLSerializer();
        return serializer.read(xml).toString();
    }

    public static String jsonToXML(String json) {
        JSONObject jobj = JSONObject.fromObject(json);

        XMLSerializer xmlSerializer = new XMLSerializer();
        // 根节点名称
        xmlSerializer.setRootName("xml");
        // 不对类型进行设置
        xmlSerializer.setTypeHintsEnabled(false);
        String xmlStr=xmlSerializer.write(jobj);
        xmlStr=xmlStr.split("\r\n")[1];
        log.info("转换后的参数:"+xmlStr);
        return xmlStr;
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

XMLParser 详解

XMLParser内部通过 OSFileSource    fFile来读取文件内容; 成员变量XMLTag*         fRootTag,获取内容后调用  fRootTag = NEW X...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Android 利用XmlParser解析assets目录下的xml文件

Context test_Context = null;  String test_package = packageName;   try {                 test_...

递归方式 DOM 解析(parse) XML

friends.xml   小红 123456789 小平 ...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

VC下XML解析类 CXMLParse 指南

说明CXMLParse类最初版本来自于codeproject.com http://download.csdn.net/source/534628 在多年的使用过程中,做了一些自己的升级,包括: 1....
  • IamNieo
  • IamNieo
  • 2008年07月10日 23:13
  • 5830

Android parse XML

Android 支持JAVA传统的两种方式:DOM 和SAX。 DOM 需要load整个文件,所以需要比较多的内存,担正因为此,整颗树都生成好,比较直观。DOM的代码稍微复杂些,以下是几个准则:·  ...

Unity中XMLParser的使用

C# 轻量级解析XML——XMLParser 记得之前写过一篇关于XML解析的博客(猛点查看),之前是因为发现Xpath这个类似SQL语句的字符串解析XML,觉得很惊奇,遂有了那篇文章。用XMLPa...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:XMLParser 使用
举报原因:
原因补充:

(最多只允许输入30个字)