2010-12-12 2 views
1

dieser Parsing ist ein bisschen frech, ich frage Sie effektiv Code für mich zu schreiben, aber ich habe harte Zeit, bestimmte Daten aus einem XML-ErgebnisjQuery xml

hier ist die XML-

<?xml version="1.0" encoding="UTF-8" ?> 
<GeocodeResponse> 
    <status>OK</status> 
    <result> 
     <type>route</type> 
     <address_component> 
      <long_name>xxxxxxxxxxx</long_name> 
      <short_name>xxxxxxxxxxx</short_name> 
      <type>administrative_area_level_3</type> 
      <type>political</type> 
     </address_component> 
    </result> 
    <result> 
     <type>postal_code</type> 
     <address_component> 
      <long_name>xxxxxxxxxxx</long_name> 
      <short_name>xxxxxxxxxxx</short_name> 
      <type>administrative_area_level_2</type> 
      <type>political</type> 
     </address_component> 
    </result> 
</GeocodeResponse> 
zu extrahieren

Wie kann ich long_name des Typs administrative_area_level_3 auf address_component des Ergebnistyps route mit jquery erhalten?

+0

Das letzte Zeile soll ein enger Tag für '' sein, nicht wahr? – Pointy

+0

ja, bearbeitet meine Frage, um es zu reflektieren – nLL

Antwort

2

sollte dies für Sie arbeiten

 
$(document).ready(function() { 
    $.ajax({ 
     type: "GET", 
     dataType: "xml", 
     url: "XMLFile.xml", 
     success: function (xml) { 
      $(xml).find('type').each(function() { // find all "type" tag in XML 
       if ($(this).text() == 'administrative_area_level_3') { // in here $(this) is our "type" tag 
        var result = $(this).parent().find('long_name').text(); // get result 
        $('#result').html('The Result is: ' + result) // write result 
       } 
      }) 
     } 
    }) 
}) 

anschauliches Beispiel ist here

+0

danke, es funktioniert gut auf IE, aber nicht auf Firefox oder Pera mit Dummy-XML-Antwort. Es gibt keinen Fehler, nur passiert nichts – nLL

+0

es ist sehr seltsam. Ich habe diesen Code in Firefox mit Firebug geschrieben und getestet. – Fatih

+0

Es tut mir leid, aber dieses Beispiel funktioniert in allen Browsern. Firefox Chrome Opera IE9 IE8. Ich konnte Safari nicht testen, aber ich denke, es wird funktionieren, da Safari ein Web-Kit-Browser wie Chrome ist und in Chrome funktioniert. – Fatih

0

Zuerst jQuery selbst nicht wirklich XML — es lässt es den Browser tun. Es kann ein DOM-Fragment erstellen und Sie können es dann untersuchen. Wenn also Ihre xml in einer Zeichenfolge könnten Sie verwenden:

var xml = $(xmlString); 

? Dann könnten Sie tun:

var longName = null; 

xml.children('result').each(function() { 
    if ($(this).children('type').text() === 'route') { 
    var addr = $(this).find('address_component'); 
    if (addr.find('type').filter(function() { return this.innerHTML === 'administrative_area_level_3'; }).length()) 
     longName = addr.children('long_name').text(); 
    } 
}); 

oder so ähnlich jedenfalls.