Posted by & filed under python.

Простейшая работа:

import libxml2
doc=libxml2.parseDoc(content)
a=doc.xpathEval('/kml/Response/name')
print ((a[0].content))

Работа с учётом namespace:

import libxml2
doc=libxml2.parseDoc(content)
xp = doc.xpathNewContext()
xp.xpathRegisterNs("kml2", "http://earth.google.com/kml/2.0")
a=xp.xpathEval('/kml2:kml/kml2:Response/kml2:name')
print ((a[0].content))

Данный пример работает для следующего xml-файла:

 <kml xmlns="http://earth.google.com/kml/2.0"><Response>
  <name>1600 pennsylvania ave washington dc</name>
  <Status>
    <code>200</code>
    <request>geocode</request>
  </Status>
  <Placemark id="p1">
    <address>1600 Pennsylvania Ave NW, Washington D.C., DC 20500, USA</address>
    <AddressDetails Accuracy="8" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"><Country><CountryNameCode>US</CountryNameCode><CountryName>USA</CountryName><AdministrativeArea><AdministrativeAreaName>DC</AdministrativeAreaName><SubAdministrativeArea><SubAdministrativeAreaName>District of Columbia</SubAdministrativeAreaName><Locality><LocalityName>Washington D.C.</LocalityName><Thoroughfare><ThoroughfareName>1600 Pennsylvania Ave NW</ThoroughfareName></Thoroughfare><PostalCode><PostalCodeNumber>20500</PostalCodeNumber></PostalCode></Locality></SubAdministrativeArea></AdministrativeArea></Country></AddressDetails>
    <ExtendedData>
      <LatLonBox north="38.9002436" south="38.8939484" east="-77.0333974" west="-77.0396926" />
    </ExtendedData>
    <Point><coordinates>-77.0365191,38.8976964,0</coordinates></Point>
  </Placemark>
</Response></kml>
Опубликовать в Facebook
Опубликовать в Google Plus

Leave a Reply

You must be logged in to post a comment.