Mam ten plik XML :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList- 
1.0.dtd">
<plist version="1.0">
<dict>
   <key>UIRequiredDeviceCapabilities</key>
   <dict>
      <key>arm64</key>
      <true/>
  </dict>
  <key>artistId</key>
...
  <key>genre</key>
  <string>Travel</string>
  <key>genreId</key>
  <integer>6003</integer>
  <key>itemId</key>
  <integer>1260842311</integer>
</dict>

Jak mogę uzyskać ostatnią liczbę całkowitą, aby uzyskać itemID w Pythonie?

1260842311

0
userHG 16 grudzień 2019, 02:05
To wyrażenie xpath działa: //key[.="itemId"]/following-sibling::integer/text()
 – 
jordanm
16 grudzień 2019, 02:31
Otrzymuję AttributeError z tym kodem: dla użytkownika w tree.xpath("//key[.='itemId']/following-sibling::integer/text()"): print(user.text)
 – 
userHG
20 grudzień 2019, 14:54

1 odpowiedź

Szybkim podejściem byłoby użycie ElementTree z wyrażeniem XPath-1.0:

from xml.etree import ElementTree as ET 
lastInt = ET.parse('input.xml').findall("dict/integer[last()]")
for i in lastInt: 
  print i.text

ET.parse ustawia kontekst na główny element XML o nazwie plist. Następnie findall wybiera ostatnie dziecko integer elementu dict. Następnie for iteruje po ostatnich elementach integer każdego znalezionego elementu dict.

0
zx485 16 grudzień 2019, 02:27