【问题标题】:Parsing xml (storing only selected data)解析 xml(仅存储选定的数据)
【发布时间】:2012-06-17 19:44:02
【问题描述】:

我在变量“结果”中有一个来自 web 服务的 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 以获取纬度和经度并将其绘制在谷歌地图上..

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

提前谢谢.. :))

【问题讨论】:

  • 到目前为止您尝试过什么?有 2 个不同的步骤;解析,然后绘图。恕我直言,将两者放在同一个问题中会减少您在要求大量代码时获得的答案的数量/质量。

标签: android eclipse google-maps xml-parsing


【解决方案1】:

我最喜欢的解析 xml 的方法是使用 JAXB。您需要一个 XML Schema Definition 文件来说明 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>

【讨论】:

    【解决方案2】:

    您可以使用 xml 解析器(如 tinyXml:http://sourceforge.net/projects/tinyxml/)来解析文档,然后只需选择经度和纬度标签内部文本值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-06
      • 2011-08-07
      • 2015-03-22
      • 2013-06-06
      • 2018-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多