2016-04-10 4 views
1

Im пытается получить текст из тега «данных» с именем = «Telefono», но я не могу решить:Получить текст из тега атрибута jsoup

<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(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

Если вы хотите получить только 5555, то вы можете использовать text() из <Data name='phone'>. Если может быть больше таких элементов, то вам может понадобиться, чтобы добавить больше данных о своих предков/родителей, но, например, вы отправили это должно быть достаточно:

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

System.out.println ((i.select ("ExtendedData") выберите ("Data") тэгу ("телефон") текст()))...;

Приведенный выше код не работает, так как метод 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()) 
Смежные вопросы