jdom解析xml字符串

<!-- xml字符串文件如下 -->
<?xml version="1.0" encoding="utf-8"?>
<DataTable>
	<xs:schema id="NewDataSet" xmlns=""
		xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
		<xs:element name="NewDataSet" msdata:IsDataSet="true"
			msdata:MainDataTable="BD" msdata:UseCurrentLocale="true">
			<xs:complexType>
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element name="BD">
						<xs:complexType>
							<xs:sequence>
								<xs:element name="Name" type="xs:string" minOccurs="0" />
								<xs:element name="LatitudebeidouGps" type="xs:string"
									minOccurs="0" />
								<xs:element name="LongitudebeidouGps" type="xs:string"
									minOccurs="0" />
								<xs:element name="Speed" type="xs:string" minOccurs="0" />
								<xs:element name="Heading" type="xs:string"
									minOccurs="0" />
								<xs:element name="Course" type="xs:int" minOccurs="0" />
								<xs:element name="Time" type="xs:string" minOccurs="0" />
							</xs:sequence>
						</xs:complexType>
					</xs:element>
				</xs:choice>
			</xs:complexType>
		</xs:element>
	</xs:schema>
	<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
		xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
		<DocumentElement>
			<BD diffgr:id="BD1" msdata:rowOrder="0" diffgr:hasChanges="inserted">
				<Name>交工82</Name>
				<LatitudebeidouGps>khNgehWIdWEZYaEFWTdduA==</LatitudebeidouGps>
				<LongitudebeidouGps>4ZBPziWnCDXu61Ta4Bb54w==</LongitudebeidouGps>
				<Speed></Speed>
				<Heading>511</Heading>
				<Course>0</Course>
				<Time>2015-11-18 11:01:49</Time>
			</BD>
			<BD diffgr:id="BD2" msdata:rowOrder="1" diffgr:hasChanges="inserted">
				<Name>新海鳄</Name>
				<LatitudebeidouGps>Yn8OHhlOcCFOBZ+F1cwgpA==</LatitudebeidouGps>
				<LongitudebeidouGps>r/ldhqZad+b/YIqFWSbfMw==</LongitudebeidouGps>
				<Speed></Speed>
				<Heading>317</Heading>
				<Course>0</Course>
				<Time>2015-11-18 10:57:24</Time>
			</BD>
			<BD diffgr:id="BD3" msdata:rowOrder="2" diffgr:hasChanges="inserted">
				<Name>三航拖907</Name>
				<LatitudebeidouGps>AlIlguvUKOSuOPSwDOzEQg==</LatitudebeidouGps>
				<LongitudebeidouGps>nHYrlHOgvTKFq1FC4dWcPQ==</LongitudebeidouGps>
				<Speed>102.3</Speed>
				<Heading>511</Heading>
				<Course>0</Course>
				<Time>2013-08-14 10:35:01</Time>
			</BD>
			<BD diffgr:id="BD4" msdata:rowOrder="3" diffgr:hasChanges="inserted">
				<Name>方驳99</Name>
				<LatitudebeidouGps>w1/6Gcj6nj5lc1hXp7/mfw==</LatitudebeidouGps>
				<LongitudebeidouGps>cPBpCNQ+A9V4r2la4CFtNQ==</LongitudebeidouGps>
				<Speed></Speed>
				<Heading>511</Heading>
				<Course>0</Course>
				<Time>2015-11-18 11:01:33</Time>
			</BD>
		</DocumentElement>
	</diffgr:diffgram>
</DataTable>

 

/**
 * 解析xml中"BD"节点下的内容
 * @param xmlDoc xml字符串
 * @return
 */
public static List<Map<String, String>> getShipList(String xmlDoc) {
	
	List<Map<String, String>> list = null;
    //创建一个新的字符串
    StringReader read = new StringReader(xmlDoc);
    //创建新的输入源SAX 解析器将使用 InputSource 对象来确定如何读取 XML 输入
    InputSource source = new InputSource(read);
    //创建一个新的SAXBuilder
    SAXBuilder sb = new SAXBuilder();
    try {
    	list = new ArrayList<Map<String,String>>();
    	Map<String, String> map = null;
        //通过输入源构造一个Document
        Document doc = sb.build(source);
        //获取的根元素
        Element root = doc.getRootElement();
        //获取"DocumentElement"子节点(第二个参数是命名空间Namespace)
        Element child = root.getChild("diffgram", null).getChild("DocumentElement", null);
        Element et = null;
        //循环遍历"DocumentElement"节点下的"BD"节点
        for(Object obj : child.getChildren("BD", null)){
            et = (Element) obj;
            map = new HashMap<String, String>();
            map.put("Name", et.getChildTextTrim("Name"));
			map.put("LatitudebeidouGps", et.getChildTextTrim("LatitudebeidouGps"));
			map.put("LongitudebeidouGps", et.getChildTextTrim("LongitudebeidouGps"));
			map.put("Speed", et.getChildTextTrim("Speed"));
			map.put("Heading", et.getChildTextTrim("Heading"));
			map.put("Course", et.getChildTextTrim("Course"));
			map.put("Time", et.getChildTextTrim("Time"));
			list.add(map);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return list;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值