zoukankan      html  css  js  c++  java
  • java-xml解析

    1、XML转json,可以使用import org.json.XML;直接转换,但直接返回org.json.JSONObject到页面会出现错误,然后把org.json.JSONObject类型转换为alibaba类型json返回页面正常

    JSONObject object1 = new JSONObject();
    if (!StringUtils.isEmpty(result)) {
                    org.json.JSONObject orgJson = XML.toJSONObject(result);
                    jObject = JSONObject.parseObject(orgJson.toString());
                }
                retData.setCode(ReturnResponData.SUCCESSED);
                retData.setMsg("成功");
                retData.setData(jObject);

     2、xml字符串解析

    Document document = DocumentHelper.parseText(xml);
    Element rootElement = document.getRootElement();
    Iterator iterator = rootElement.elementIterator();
    while (iterator.hasNext()){
          Element element = (Element) iterator.next();
          String nodeName = element.getName();
          String nodeValue = element.getStringValue();
    }
    Document document = DocumentHelper.parseText(o[0].toString());
    Node node = document.selectSingleNode("root");
    if (node != null && node.hasContent()){
           String code = node.selectNodes("code").get(0).getText();
           if (code.equals("0")){
               sessionId = node.selectNodes("sessionId").get(0).getText();
           }
    }

    3、xml字符串转JavaBean对象

    JAXBContext jaxbContext = JAXBContext.newInstance(VehiclePassInfo.class);
    Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
    VehiclePassInfo vehiclePassInfo = (VehiclePassInfo)unmarshaller.unmarshal(new StringReader(xml));

    出现问题:javax.xml.bind.UnmarshalException: 意外的元素 (uri:"", local:"ROOT")。所需元素为(none)

    解决方法:Java类中添加 @XmlRootElement(name = "ROOT")

      Java类:

    import javax.xml.bind.annotation.XmlAccessType;
    import javax.xml.bind.annotation.XmlAccessorType;
    import javax.xml.bind.annotation.XmlElement;
    import javax.xml.bind.annotation.XmlRootElement;
    
    @XmlRootElement(name = "ROOT")
    @XmlAccessorType(XmlAccessType.FIELD)
    public class VehiclePassInfo {
    
        /**
         * ID
         */
        @XmlElement(name = "KKBH")
        private String crossingId;
    
        public String getCrossingId() {
            return crossingId;
        }
    
        public void setCrossingId(String crossingId) {
            this.crossingId = crossingId;
        }
    
    }
  • 相关阅读:
    阿里云高级技术专家周晶:基于融合与协同的边缘云原生体系实践
    Spring Boot Serverless 实战系列“架构篇” 首发 | 光速入门函数计算
    基于 EMR OLAP 的开源实时数仓解决方案之 ClickHouse 事务实现
    【ClickHouse 技术系列】 在 ClickHouse 中处理实时更新
    LeetCode_Two Sum
    LeetCode_ Remove Element
    LeetCode_Same Tree
    LeetCode_Symmetric Tree
    LeetCode_Path Sum
    LeetCode_Merge Sorted Array
  • 原文地址:https://www.cnblogs.com/lijianda/p/11712670.html
Copyright © 2011-2022 走看看