2012-06-14 58 views
0

我从一个web服务在一个变量XML输出的“结果”解析XML(仅存储选择数据)

它看起来像这样,

<ArrayOfSeriesRecord xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns="http://hiscentral.cuahsi.org/20100205/"> 

<SeriesRecord> 
<ServCode>IIHRTippingB</ServCode> 
<ServURL> 
http://his08.iihr.uiowa.edu/tippingbucket/cuahsi_1_0.asmx?WSDL 
</ServURL> 
<location>IIHR:CC00</location> 
<VarCode>IIHR:Precipitation</VarCode> 
<VarName>Precipitation</VarName> 
<beginDate>9/25/2006 12:00:00 AM</beginDate> 
<endDate>5/7/2011 12:00:00 AM</endDate> 
<ValueCount>161738</ValueCount> 
<Sitename>CC00</Sitename> 
<latitude>41.736152648925781</latitude> 
<longitude>-91.931015014648438</longitude> 
<datatype>Continuous</datatype> 
<valuetype>FieldObservation</valuetype> 
<samplemedium>Precipitation</samplemedium> 
<timeunits>minute</timeunits> 
<conceptKeyword>Precipitation</conceptKeyword> 
<genCategory/> 
<TimeSupport>15</TimeSupport> 
</SeriesRecord> 

我需要解析这个XML获得纬度和经度,并绘制它的谷歌地图..

任何想法我怎么能做到这一点.. 请帮助

感谢名单提前.. :))

+0

你尝试过什么到目前为止的例子?有2个不同的步骤;解析,然后绘图。恕我直言,把这两个在同一个问题将减少你得到的答案的数量/质量,因为你要求很多代码。 – Basic

回答

2

我最喜欢解析xml的方法是使用JAXB。您需要一个XML模式定义文件,以说明如何构建XML。然后使用JAXB生成表示元素的Java类。然后,您可以对这些对象进行统一和解组XML /数据。

//Read an XML file (or string, stream, etc...) into Java classes 
JAXBContext context = JAXBContext.newInstance("org.my.jaxb.classes"); 
Unmarshaller unmarshaller = context.createUnmarshaller(); 

JAXBElement<ArrayOfSeriesRecord> rootJaxb = (JAXBElement<ArrayOfSeriesRecord>)unmarshaller.unmarshal(new File("file.xml")); 
ArrayOfSeriesRecord root = rootJaxb.getValue(); 
List<SeriesRecord> seriesRecords = root.getSeriesRecord(); 

的XSD

//Example xsd 
<?xml version="1.0" encoding="UTF-8"?> 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:element name="ArrayOfSeriesRecord" type="ArrayOfSeriesRecordType"></xsd:element> 

    <xsd:complexType name="ArrayOfSeriesRecordType"> 
     <xsd:sequence> 
      <xsd:element name="SeriesRecord" type="SeriesRecordType" maxOccurs="unbounded"></xsd:element> 
     </xsd:sequence> 
    </xsd:complexType> 

    <xsd:complexType name="SeriesRecordType"> 
     <xsd:sequence> 
      <xsd:element name="ServCode" type="xsd:string"></xsd:element> 
     </xsd:sequence> 
    </xsd:complexType> 
</xsd:schema> 
+0

这工作非常好.. thanx很多 –