Tworzę nakładkę GUI dla Eve Online API w Pythonie.
Udało mi się pobrać dane XML z ich serwera.
Próbuję pobrać wartość z węzła o nazwie „nazwa”:
from xml.dom.minidom import parse
dom = parse("C:\\eve.xml")
name = dom.getElementsByTagName('name')
print name
Wydaje się, że znajduje się węzeł, ale wynik jest poniżej:
[<DOM Element: name at 0x11e6d28>]
Jak mogę to zrobić, aby wydrukować wartość węzła?
Odpowiedzi:
Po prostu powinno być
źródło
Prawdopodobnie coś takiego, jeśli jest to część tekstowa, którą chcesz ...
Część tekstowa węzła jest uważana za węzeł sam w sobie umieszczony jako węzeł potomny tego, o który prosiłeś. Dlatego będziesz chciał przejrzeć wszystkie jego elementy podrzędne i znaleźć wszystkie węzły potomne, które są węzłami tekstowymi. Węzeł może mieć kilka węzłów tekstowych; na przykład.
Chcesz zarówno „blabla”, jak i „znylpx”; stąd „” .join (). Możesz chcieć zastąpić spację znakiem nowej linii lub czymś takim, a może nic.
źródło
możesz użyć czegoś takiego, ale mi się udało
źródło
Wiem, że to pytanie jest teraz dość stare, ale pomyślałem, że możesz mieć łatwiejszy czas z ElementTree
Wiem, że to nie jest super specyficzne, ale właśnie to odkryłem i jak dotąd znacznie łatwiej jest mi się rozejrzeć niż minidom (ponieważ tak wiele węzłów to w zasadzie białe spacje).
Na przykład masz razem nazwę tagu i rzeczywisty tekst, tak jak można się spodziewać:
źródło
Powyższa odpowiedź jest poprawna, a mianowicie:
Jednak dla mnie, podobnie jak innych, moja wartość była niższa w hierarchii:
Aby to znaleźć, użyłem:
Uruchomienie tego dla mojego prostego pliku SVG utworzonego w Inkscape dało mi:
Użyłem xml.dom.minidom, różne pola są wyjaśnione na tej stronie, MiniDom Python.
źródło
Miałem podobny przypadek, co działało u mnie to:
name.firstChild.childNodes [0] .data
XML ma być prosty i tak naprawdę jest i nie wiem, dlaczego minidom Pythona zrobił to tak skomplikowane ... ale tak to jest zrobione
źródło
Oto nieco zmodyfikowana odpowiedź Henrika dla wielu węzłów (np. Gdy getElementsByTagName zwraca więcej niż jedną instancję)
źródło
Odpowiedź została udzielona, mój wkład polega na wyjaśnieniu jednej rzeczy, która może zmylić początkujących:
Zastosowano niektóre z sugerowanych i poprawnych odpowiedzi,
firstChild.data
a innefirstChild.nodeValue
zamiast. Jeśli zastanawiasz się, jaka jest różnica między nimi, powinieneś pamiętać, że robią to samo, ponieważnodeValue
jest to tylko alias dladata
.Odniesienie do mojego oświadczenia można znaleźć jako komentarz do kodu źródłowego minidom :
źródło
To drzewo i mogą zawierać elementy zagnieżdżone. Próbować:
źródło