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