2017-05-02 6 views
0

Ich habe ein XML von NOAA abgerufen und ich versuche, es mit Minidom in Python zu analysieren, aber ich bin nicht in der Lage, die Werte abzurufen.Wie man XML in Python analysiert

`<parameters applicable-location="point1"> 
    <temperature type="maximum" units="Fahrenheit" time-layout="k-p24h-n7-1"> 
    <name>Daily Maximum Temperature</name> 
    <value>75</value> 
    <value>67</value> 
    <value>65</value> 
    <value>72</value> 
    <value>65</value> 
    <value>64</value> 
    <value>62</value> 
    </temperature> 
</parameters> 

`

Ich brauche die Werte unter Tag maximale Temperatur abzurufen.

+0

Sie könnten dieses Beispiel auf ein kleineres Testset reduzieren. Aber noch wichtiger: Sie müssen den bereits vorhandenen Code posten. Wir können keine Fixes für Code vorschlagen, die wir nicht sehen können. – tdelaney

+0

Weiter zu @tdelaney: lesen Sie [ask] und [mcve]. – boardrider

Antwort

3

Die Verwendung der BeautifulpSoup ist ein einfacher Weg.

Sie können es versuchen. so was.

from bs4 import BeautifulSoup 

XML_STRING = """ 
<parameters applicable-location="point1"> 
    <temperature type="maximum" units="Fahrenheit" time-layout="k-p24h-n7-1"> 
    <name>Daily Maximum Temperature</name> 
    <value>75</value> 
    <value>67</value> 
    <value>65</value> 
    <value>72</value> 
    <value>65</value> 
    <value>64</value> 
    <value>62</value> 
    </temperature> 
</parameters> 
""" 

soup = BeautifulSoup(XML_STRING, 'html.parser') 
for tag in soup.find_all('value'): 
    print(tag.string) 
2

Sie können Beautiful Soup mit libxml verwenden. Hier ist, wie die richtige Setup für Ubuntu 14.04 getestet zu tun:

sudo apt-get install libxml2-dev libxslt1-dev lib32z1-dev python-dev -y 
pip install lxml 
pip install beautifulsoup4 

ersetzen python-dev mit python3-dev wenn Sie python3 verwenden. Sie können xml parsen wie folgt:

file_content = """your xml string here""" 
from bs4 import BeautifulSoup 
soup = BeautifulSoup(file_content, "xml") 
max_temp_list = [int(item.string) for item in soup.find("temperature", {"type": "maximum"}).findAll("value")] 
print(max_temp_list) 

Bitte an documentation für weitere Beispiele siehe Elemente zu finden.

Verwandte Themen