当前位置: 代码迷 >> J2EE >> 解析有子节点的xml字符串有关问题
  详细解决方案

解析有子节点的xml字符串有关问题

热度:8   发布时间:2016-04-22 00:23:53.0
解析有子节点的xml字符串问题
我用sax解析xml字符串,发现当有子节点的时候,子节点的数据时获取不到的,谁能帮我改下代码?实现可以正常解析所有xml字符串。
Java code
public static MessageData analyzeXML(String value){        MessageData md = new MessageData();        Commoditys cd = new Commoditys();        StringReader read = new StringReader(value);        InputSource source = new InputSource(read);        SAXBuilder saxb = new SAXBuilder();   //        List result = null;            Map<String,String> map = new HashMap<String,String>();        try {                    //                result = new ArrayList();                    Document doc = saxb.build(source);                   Element root = doc.getRootElement();                      List node = root.getChildren();                   Element et = null;                   for (int i = 0; i < node.size(); i++) {                       et = (Element) node.get(i);                    List subNode = et.getChildren();                                               Element subEt = null;                       for (int j = 0; j < subNode.size(); j++) {                                                subEt = (Element) subNode.get(j);                         map.put(subEt.getName(), subEt.getText());                       }                   //                    if (map.size() > 0)   //                       result.add(map);                   }                        } catch (JDOMException e) {                            e.printStackTrace();           } catch (IOException e) {                e.printStackTrace();           }           md.setBarCode(map.get("BarCode"));        md.setOrderNumber(map.get("OrderNumber"));        md.setRecipientName(map.get("RecipientName"));        md.setRecipientAddress(map.get("RecipientAddress"));        md.setRecipientCode(map.get("RecipientCode"));        md.setRecipientPhone(map.get("RecipientPhone"));        md.setPayment(map.get("Payment"));        md.setWeight(map.get("Weight"));        md.setPostage(map.get("Postage"));        md.setServiceCharge(map.get("ServiceCharge"));        md.setPostagePostPaidFlag(map.get("PostagePostPaidFlag"));        md.setMailType(map.get("MailType"));        md.setOrderFlag(map.get("OrderFlag"));        md.setDescription(map.get("Description"));        md.setSign(map.get("Sign"));        md.setMerchantPublicCert(map.get("MerchantPublicCert"));        cd.setCommodityName(map.get("CommodityName"));        cd.setCommodityCode(map.get("CommodityCode"));        cd.setQuantity(map.get("Quantity"));        cd.setUnitPrice(map.get("UnitPrice"));        md.setCommoditys(cd);        return md;    }

发现当xml字符串如下时,cd.setCommodityName(map.get("CommodityName"));
cd.setCommodityCode(map.get("CommodityCode"));
cd.setQuantity(map.get("Quantity"));
cd.setUnitPrice(map.get("UnitPrice"));这几个是空值的,也就是没解析到。
Java code
StringBuffer xml  = new StringBuffer();        xml.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");        xml.append("<Result xmlns=\"http://www.fiorano.com/fesb/activity/DBQueryOnInput2/Out\">");        xml.append("<Content>");            xml.append("<BarCode>424244244 </BarCode >");        xml.append("<OrderNumber>42244</OrderNumber >");        xml.append("<RecipientName>ffff</RecipientName>");                    xml.append("<RecipientAddress>gggg</RecipientAddress>");                    xml.append("<RecipientPhone>332323</RecipientPhone>");                xml.append("<RecipientCode>收件人fggf</RecipientCode>");                xml.append("<Payment>1452 </Payment>");                    xml.append("<Weight>24</Weight>");        xml.append("<Postage>145</Postage>");                xml.append("<ServiceCharge>354</ServiceCharge>");        xml.append("<PostagePostPaidFlag>1</PostagePostPaidFlag>");                xml.append("<MailType>0</MailType>");        xml.append("<OrderFlag>2</OrderFlag>");        xml.append("<Commoditys>");        xml.append("<Commodity>");        xml.append("<CommodityName>fgf</CommodityName>");                xml.append("<UnitPrice>758</UnitPrice>");        xml.append("<Quantity>50</Quantity>");        xml.append("<CommodityCode>dfdf23323</CommodityCode>");        xml.append("</Commodity>");        xml.append("</Commoditys>");        xml.append("<Description>附加说明</Description>");                xml.append("</Content>");        xml.append("</Result>");        MessageData md = Parser.analyzeXML(xml.toString());
  相关解决方案