如何使用jsoup从xml中提取数据

时间:2013-11-11 21:55:38

标签: android xml xml-parsing jsoup

如何使用jsoup访问此xml文档中的数据?

具体是F数据,即F =" 11"

根据我的尝试,我只返回900,1080,1260,0,180,360等数据。

<DV dataDate="2013-11-11T20:00:00Z" type="Forecast">
<Location i="3604" lat="51.708" lon="-5.055" name="MILFORD HAVEN C.B." country="WALES" continent="EUROPE">
<Period type="Day" value="2013-11-11Z">
<Rep D="W" F="11" G="18" H="100" Pp="15" S="9" T="13" V="MO" W="8" U="1">900</Rep>
<Rep D="W" F="12" G="18" H="100" Pp="52" S="7" T="13" V="VP" W="11" U="0">1080</Rep>
<Rep D="NNW" F="11" G="9" H="96" Pp="59" S="4" T="12" V="VG" W="12" U="0">1260</Rep>
</Period>
<Period type="Day" value="2013-11-12Z">
<Rep D="NW" F="9" G="13" H="88" Pp="80" S="7" T="11" V="VG" W="15" U="0">0</Rep>
<Rep D="NW" F="9" G="13" H="88" Pp="13" S="9" T="11" V="VG" W="7" U="0">180</Rep>
<Rep D="NNW" F="7" G="18" H="86" Pp="2" S="9" T="9" V="VG" W="0" U="0">360</Rep>
<Rep D="NNW" F="7" G="20" H="83" Pp="0" S="11" T="10" V="VG" W="1" U="1">540</Rep>

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

首先解析你的xml:

String xml = "<DV dataDate='2013-11-11T20:00:00Z'....";
Document doc = Jsoup.parse(xml, "", Parser.xmlParser());

然后,您可以像使用html文档一样遍历文档。例如,如果要选择所有<rep>标签并打印F数据:

Elements rep = doc.select("rep");
for (Element e : rep) {
    System.out.println(e.attr("f"));
}

将输出:

11
12
11
9
9
7
7

仅选择第4个F值:rep.get(3).attr("f")为9。


更新

您可以先将远程文件作为String获取,然后照常使用上面的代码。例如:

String xml = Jsoup.connect("http://datapoint.metoffice.gov.uk/public/data/val/wxfcs/all/xml/3604?res=3hourly&key=2dd5950b-91e1-4671-9d83-625f2ae9cbf5").get().toString();

Document doc = Jsoup.parse(xml, "", Parser.xmlParser());