XML工具类 - XmlUtils.java

XML工具类,提供序列化XML、反序列化XML、获取指定节点的值的方法。

 

源码如下:(点击下载 - XmlUtils.javadom4j-1.6.1.jarxstream-1.4.7.jar )

 1 import org.dom4j.Document;
 2 import org.dom4j.DocumentException;
 3 import org.dom4j.DocumentHelper;
 4 import org.dom4j.Element;
 5 import com.thoughtworks.xstream.XStream;
 6 
 7 /**
 8  * XML工具类
 9  * 
10  */
11 public class XmlUtils {
12 
13     private final static String XML_DECLARATION = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
14 
15     private XmlUtils() {
16     }
17 
18     /**
19      * 序列化XML
20      * 
21      * @param obj
22      * @param clazz
23      * @return
24      */
25     public static <T> String toXML(Object obj) {
26         XStream stream = getXStream();
27         stream.processAnnotations(obj.getClass());
28         return new StringBuffer(XML_DECLARATION).append(stream.toXML(obj)).toString();
29     }
30 
31     /**
32      * 反序列化XML
33      * 
34      * @param xmlStr
35      * @param clazz
36      * @return
37      */
38     public static <T> T fromXML(String xmlStr, Class<T> clazz) {
39         XStream stream = getXStream();
40         stream.processAnnotations(clazz);
41         Object obj = stream.fromXML(xmlStr);
42         try {
43             return clazz.cast(obj);
44         } catch (ClassCastException e) {
45             return null;
46         }
47     }
48 
49     /**
50      * 获取指定节点的值
51      * 
52      * @param xpath
53      * @param params
54      * @return
55      */
56     public static String getNodeValue(String xpath, String dataStr) {
57         try {
58             // 将字符串转为xml
59             Document document = DocumentHelper.parseText(dataStr);
60             // 查找节点
61             Element element = (Element) document.selectSingleNode(xpath);
62             if (element != null) {
63                 return element.getStringValue();
64             }
65         } catch (DocumentException e) {
66             e.printStackTrace();
67         }
68         return "";
69     }
70 
71     /**
72      * 获取Xstream实例
73      * 
74      * @return
75      */
76     public static XStream getXStream() {
77         return new XStream();
78     }
79 }

 

转载于:https://www.cnblogs.com/zhoubang521/p/5200617.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以处理非常复杂的xml,带节点保存,如节点a下的节点b下的name,调用可用map.get("a").get("b").get("name")如:{ "sectornum": "3", "ReturnResult": "0", "containers": { "container": [ { "shelfhight": "0.086", "cardinfos": { "cardinfo": [ { "cardname": "290.蓝田局华胥电信营业厅CDMA基站/BTS529/架1列1/框3槽(0)HECM" }, { "cardname": "290.蓝田局华胥电信营业厅CDMA基站/BTS529/架1列1/框3槽(10)FAN" }, { "cardname": "290.蓝田局华胥电信营业厅CDMA基站/BTS529/架1列1/框3槽(9)UPEU" }, { "cardname": "290.蓝田局华胥电信营业厅CDMA基站/BTS529/架1列1/框3槽(7)CMPT" }, { "cardname": "290.蓝田局华胥电信营业厅CDMA基站/BTS529/架1列1/框3槽(2)HCPM" } ] } }, { "shelfhight": "0.308", "cardinfos": { "cardinfo": [ { "cardname": "290.蓝田局华胥电信营业厅CDMA基站/BTS529/架1列1/框1槽(2)CRFU" }, { "cardname": "290.蓝田局华胥电信营业厅CDMA基站/BTS529/架1列1/框1槽(4)CRFU" }, { "cardname": "290.蓝田局华胥电信营业厅CDMA基站/BTS529/架1列1/框1槽(0)CRFU" } ] } }, { "shelfhight": "0.086" }, { "shelfhight": "0.044" } ] }, "rackname": "HW401C", "asset": { "comments": "", "buydate": "", "assetcardno": "B", "category": "" }, "barcode": "", "version": "", "entity": { "entitycode": "LTJHXYYCX01/XA-HWMACBTS529", "installaddress": "", "entityspec": "BTS", "entityname": "蓝田局华胥电信营业厅CDMA基站/BTS529", "entityid": "901061314", "model": "HUAWEI BTS3900", "vendorname": "HuaWei" }, "ReturnInfo": "成功" }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值