使用属性jsoup从标记中获取文本

时间:2016-04-10 13:38:44

标签: java android xml jsoup element

我尝试从名为“数据”的标签获取文字,名称=“telefono”,但我无法解决:

<Placemark>
    <name>Iglesia </name>
    <description> Abril </description>

    <ExtendedData>
        <Data name='description'>
            <value>4444</Data>
        <Data name='phone'>
            <value>5555</value>
        </Data>
    </ExtendedData>
    <Point>
        <coordinates>-0.5191416,38.9848326,0.0</coordinates>
    </Point>
</Placemark>

我有一个“for”选择所有地标:

for(org.jsoup.nodes.Element i : e.select("Placemark"))

我已经尝试了所有可能获得手机5555的价值

但我不知道,总是得到所有数据电话和说明。

System.out.println((i.select("ExtendedData").text()));
System.out.println((i.select("ExtendedData").select("Data").tagName("phone").text()));
System.out.println("(i.select("ExtendedData").tagName("phone").text()));

2 个答案:

答案 0 :(得分:2)

如果您只想获得5555,那么您可以使用text() <Data name='phone'>。如果可以有更多这样的元素,那么你可能需要添加更多关于其祖先/父母的数据,但是例如你发布这个就足够了:

System.out.println(doc.select("data[name=phone]").text());

答案 1 :(得分:1)

  

的System.out.println(。(i.select( “ExtendedData”)选择( “数据”)的tagName( “手机”)文本()));

上述代码不起作用,因为tagName方法将更新所有选定Data元素的标记名称。假设选择了以下元素:

<Data name='phone'><value>5555</value></Data>

调用tagName方法会将其转换为:

<phone name='phone'><value>5555</value></phone>

而是试试这个:

System.out.println( i.select("ExtendedData > Data[name=phone]").text() )