java解析xml获取对应值

xml如下

<?xml version="1.0" encoding="UTF-8"?><ResponseInfo><ResCode>Success</ResCode><ResMessage>Success</ResMessage><ErrorNo>0</ErrorNo><ResultToken>1000_httpd_20161107215454_c37de700_48bd696a</ResultToken><Result pageindex="1"><CardNumber>6214867788922101882</CardNumber><UserName></UserName><ValidDate></ValidDate><BankName>招商银行</BankName><BankId>3080000</BankId><CardName>银联IC金卡</CardName><CardType>借记卡</CardType></Result></ResponseInfo>

Java解析xml代码如下

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;

/**
     * 解析xml 银行卡
     * parseXMlToBankCard
     * @author sunjianbo
     * @time 2016年10月27日下午2:21:42
     * @param protocolXML
     * @param cardType
     * @return
     */
    public  ResultMsg parseXMlToBankCard(String protocolXML,ResultMsg rsm) {   

        try {
            DocumentBuilderFactory factory = DocumentBuilderFactory
                    .newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document doc;
            doc = builder
                    .parse(new InputSource(new StringReader(protocolXML)));
             Element root = doc.getDocumentElement();
                NodeList nodes = root.getChildNodes();
                BankCard bankCard = new BankCard();
                if (nodes != null) {
                     //<ResCode>第一个子节点 ,是否是Success
                     Node firstNode = nodes.item(0);
                     String firstNodeValue = firstNode.getFirstChild().getNodeValue();
                     if(null !=firstNodeValue &&  "Success".equals(firstNodeValue)){
                         for(int j = 0; j < nodes.getLength(); j++){
                              Node node = nodes.item(j);
                              if(null != node.getNodeName() && "Result".equals(node.getNodeName())){
                               //解析银行卡

                                    NodeList nls =  node.getChildNodes();
                                   for(int i= 0; i < nls.getLength(); i++){
                                         Node nl = nls.item(i);
                                         if(nl.getNodeName()!= null && nl.getFirstChild() != null){
                                                // System.out.println("节点**" + nl.getNodeName() + "\ttext="
                                               //    + nl.getFirstChild().getNodeValue());
                                                 if(nl.getFirstChild().getNodeValue() != null){
                                                     if("BankName".equals(nl.getNodeName()) ){
                                                         bankCard.setBankName(nl.getFirstChild().getNodeValue());
                                                     }
                                                     /*if("BankId".equals(nl.getNodeName()) ){
                                                         bankCard.setCardNo(nl.getFirstChild().getNodeValue());
                                                     }*/
                                                     if("CardName".equals(nl.getNodeName()) ){
                                                         bankCard.setCardName(nl.getFirstChild().getNodeValue());
                                                     }
                                                     if("CardType".equals(nl.getNodeName()) ){
                                                         bankCard.setCardType(nl.getFirstChild().getNodeValue());
                                                     }
                                                     if("CardNumber".equals(nl.getNodeName()) ){
                                                         bankCard.setCardNo(nl.getFirstChild().getNodeValue());
                                                     }
                                                     rsm.setRtncode(0);
                                                     rsm.setRtninfo(bankCard);
                                                 }
                                         }
                                    }
                             }
                         }
                      }else{
                          Node secendtNode = nodes.item(1);
                             String secendtNodeValue = secendtNode.getFirstChild().getNodeValue();
                          rsm.setErrmsg(secendtNodeValue);
                      }

                }else{
                    rsm.setErrmsg("Test failed, did not get test results, please test again");
                }

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

        return rsm;
    }
时间: 2024-10-05 04:58:32

java解析xml获取对应值的相关文章

java解析XML获取城市代码

运行前先导入dom4j架包,由于我们公司用的代理服务器所以下面我设置了代理ip,不需要的可直接忽略 package com.chengshidaima.tools; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.InetSocketAddress; import java.net.Proxy; import java.net.URL; import java.net.URLConn

JAVA解析XML之SAX方式

JAVA解析XML之SAX方式 SAX解析xml步骤 通过SAXParseFactory的静态newInstance()方法获取SAXParserFactory实例factory 通过SAXParserFactory实例的newSAXParser()方法返回SAXParser实例parser 创建一个类继承DefaultHandle,重写方法进行业务处理并创建这个类的实例handle 重写DefaultHandle类的方法 startElement方法用来遍历xml文件的开始标签; endEle

Java 解析 XML

Java 解析 XML XML解析技术有两种 DOM SAX DOM方式 根据XML的层级结构在内存中分配一个树形结构,把XML的标签,属性和文本等元素都封装成树的节点对象 优点: 便于实现增 删 改 查 缺点: XML文件过大可能造成内存溢出 SAX方式 采用事件驱动模型边读边解析:从上到下一行行解析,解析到某一元素, 调用相应解析方法 优点: 不会造成内存溢出, 缺点: 查询不方便,但不能实现 增 删 改 不同的公司和组织提供了针对DOM和SAX两种方式的解析器 SUN的jaxp Dom4j

JAVA解析XML之DOM方式

JAVA解析XML之DOM方式 准备工作 创建DocumentBuilderFactory对象;    创建DocumentBuilder对象; 通过DocumentBuilder对象的parse方法加载xml 解析XML文件的属性名和属性值 解析XML文件的节点名和节点值 常用方法如下: getElementsByTagName(); getLength(); item(); getNodeName(); getNodeValue(); getNodeType(); *getAttribute

Java 解析XML的几种方式:DOM、SAX、JDOM和DOM4J。

归纳总结Java解析XML主要有四中方式,分别是DOM.SAX.JDOM和DOM4J.其中DOM和SAX是官方包自带,另外两个JDOM和DOM4J是第三方包. 一.此篇测试代码用到的XML情况 . 1.XML内容展示 1 <?xml version="1.0" encoding="UTF-8"?> 2 <class> 3 <people> 4 <name>Jack</name> 5 <age>1

java解析xml的三种方法

java解析XML的三种方法 1.SAX事件解析 package com.wzh.sax; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; // public class Saxhandler extends DefaultHandler { @Override public void startDocument() throws

java解析xml汇总

转载于http://www.cnblogs.com/jiugehuanying/archive/2012/01/12/2320058.html [目录] 一.[基础知识——扫盲] 二.[DOM.SAX.JDOM.DOM4j简单使用介绍] 三.[性能测试] 四.[对比] 五.[小插曲XPath] 六.[补充] 关键字:Java解析xml.解析xml四种方法.DOM.SAX.JDOM.DOM4j.XPath [引言] 目前在Java中用于解析XML的技术很多,主流的有DOM.SAX.JDOM.DOM

Java解析XML之Dom4j

Java解析XML文件的方法有多种,个人感觉最常用的是使用Dom4j来解析XML文件.下面就简单介绍下Dom4j的基础使用. Dom4j需要jar包的支持,大家可以从网络上下载,如dom4j-1.6.1.jar: 下载好JAR包以后,只要导入我们的工程就可以使用了,Java WEB工程导入路径为:WebRoot/WEB-INF/lib目录下: 代码示例: 一.查看xml文档基础操作(以封装方法展示): public static void run() throws Exception { //获

详解Java解析XML的四种方法

(1)DOM解析 DOM是html和xml的应用程序接口(API),以层次结构(类似于树型)来组织节点和信息片段,映射XML文档的结构,允许获取 和操作文档的任意部分,是W3C的官方标准 [优点] ①允许应用程序对数据和结构做出更改. ②访问是双向的,可以在任何时候在树中上下导航,获取和操作任意部分的数据. [缺点] ①通常需要加载整个XML文档来构造层次结构,消耗资源大. [解析详解] ①构建Document对象: DocumentBuilderFactory dbf = DocumentBu