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

其实xml解析很快的。很方便的,用superxmlparse

procedure TForm1.Button1Click(Sender: TObject); var    straccept: string;    jo: ISuperObject; b...

请别把加班说的那么“高大上”

别把加班说的那么“高大上”        【本期观点】IT行业加班,到底有没有价值?    【导语】众所周知,说到 IT 行业,大家的第一印象都是「加班严重」     不得不说,加班确实是 IT 行业...

Xml 三种解析方法

1.PUll解析 public static List xmlParser(InputStream is) {         List list...

Unity中XMLParser的使用

C# 轻量级解析XML——XMLParser 记得之前写过一篇关于XML解析的博客(猛点查看),之前是因为发现Xpath这个类似SQL语句的字符串解析XML,觉得很惊奇,遂有了那篇文章。用XMLPa...

使用AXMLParser解析apk中的AndroidManifest.xml

如果自己搭一个Market,需要考虑对用户上传的apk文件,读取出其packageId, versionCode, permission等信息, 利用AXMLParser就可以解决这个问题。这里可以下...

浅谈IT行业加班现象

-“你才工作两年,哪来的三年工作经验?” -“加班!” 这个段子相信各位IT行业的已经看过无数次了,加班在IT行业已经被默认接受了。那么加班到底有没有价值呢?本文的重点,将在“价值”一词上,多加解释。

关于开源的XML Parser expat的介绍和使用心得

expat是使用C所写的XML解释器,采用流的方式来解析XML文件,并且基于事件通知型来调用分析到的数据,并不需要把所有XML文件全部加载到内存里,这样可以分析非常大的XML文件。由于expat库是由...

使用xmllite的XMLParser

内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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