2016-04-10 7 views
1

Im Text aus einem Tag "Data" mit dem Namen bekommen versuchen = "telefono" aber ich kann es nicht lösen:mit jsoup Attribute Text von Tag Get

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

habe ich einen "für" die wählen alle Ortsmarke:

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

ich habe alle Möglichkeiten versucht, den Wert des Telefon 5555

aber ich weiß nicht, es, immer bekommen alle Daten Telefon und Beschreibung zu erhalten.

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

Antwort

2

Wenn Sie nur 5555 erhalten möchten, dann können Sie text() von <Data name='phone'> verwenden. Wenn es mehr solcher Elemente sein können, dann können Sie brauchen, um mehr Daten über seine Vorfahren/Eltern hinzufügen, aber zum Beispiel geschrieben Sie sollte genug sein:

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

System.out.println ((i.select ("ExtendedData"). Wählen Sie ("Data"). TagName ("phone"). Text()));

Der obige Code funktioniert nicht, da die tagName Methode wird den Tag-Namen aller ausgewählten Data Elemente aktualisieren. Nehmen wir an, das unten Element ausgewählt ist:

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

Aufruf der tagName Methode es in drehen würde:

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

Statt dessen versuchen:

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