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; } }