java 以dom方式解析xml
2015-09-29 10:01
190 查看
【DOM(Document Object Model) 】
由W3C提供的接口,它将整个XML文档读入内存,构建一个DOM树来对各个节点(Node)进行操作。
下面是具体的代码实现:
由W3C提供的接口,它将整个XML文档读入内存,构建一个DOM树来对各个节点(Node)进行操作。
下面是具体的代码实现:
/** * 解析发送短信返回的XML信息 * * @param returnMsg - xml格式 * @return */ private List<SMSReturnResultMsg> parseSendReturnXml(String xmlMsg) throws Exception{ SMSReturnResultMsg smsReturnMsgDto = null; List<SMSReturnResultMsg> resultList = new ArrayList<SMSReturnResultMsg>(); try{ InputStream is = new ByteArrayInputStream(xmlMsg.getBytes("UTF-8")); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = factory.newDocumentBuilder(); Document doc = docBuilder.parse(is); Element root = doc.getDocumentElement(); //获取属性指定属性值 String name = root.getAttribute("name"); String resultMsg = SMSUtils.getSMSReturnStatusMsg(Integer.valueOf(root.getAttribute("result"))); //获取子元素 NodeList childNode = root.getChildNodes(); if(childNode != null && childNode.getLength() > 0){//子元素存在 for(int i = 0; i < childNode.getLength(); i ++){ smsReturnMsgDto = new SMSReturnResultMsg(); smsReturnMsgDto.setActionName(name);//actionName smsReturnMsgDto.setReturnStatus(resultMsg);//returnStatus smsReturnMsgDto.setCid(childNode.item(i).getAttributes().getNamedItem("cid").getNodeValue());//cid smsReturnMsgDto.setSid(childNode.item(i).getAttributes().getNamedItem("sid").getNodeValue());//sid smsReturnMsgDto.setMsgid(childNode.item(i).getAttributes().getNamedItem("msgid").getNodeValue());//msgid smsReturnMsgDto.setSmsTotal(childNode.item(i).getAttributes().getNamedItem("total").getNodeValue());//smsTotal smsReturnMsgDto.setUnitPrice(childNode.item(i).getAttributes().getNamedItem("price").getNodeValue());//unitFee smsReturnMsgDto.setCurrentRemain(childNode.item(i).getAttributes().getNamedItem("remain").getNodeValue());//currentRemain resultList.add(smsReturnMsgDto); } }else{//子元素不存在将根元素返回 smsReturnMsgDto = new SMSReturnResultMsg(); smsReturnMsgDto.setActionName(name);//actionName smsReturnMsgDto.setReturnStatus(resultMsg);//returnStatus resultList.add(smsReturnMsgDto); } }catch(Exception e){ logger.error("Exception happened in SMSServiceImpl.parseSendReturnXml(), the xmlMsg: "+ xmlMsg +"; the error msg is " + e.getMessage()); throw e; } return resultList; }
相关文章推荐
- Java – Display double in 2 decimal points
- org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException介绍
- 浅谈Java中的深拷贝和浅拷贝(转载)
- 【笔记】Spring MVC学习指南(八)表达式语言
- Java 多维数组遍历详解
- Java 中的悲观锁和乐观锁的实现
- spring相关资源
- Java – Math.pow example
- spring相关资源
- Java swing开发俄罗斯方块小游戏代码
- spring.net Corn表达式[转]
- Java – How to split a string
- java反射访问私有成员变量
- java数组初始化及内存分析
- Java数据类型和MySql数据类型对应表
- 举例讲解Java中的多线程编程
- dos命令配置jdk环境
- java数字字符串压缩
- Eclipse中注释部分的签名
- 各种排序算法的分析及java实现