Saya membuat antarmuka GUI untuk Eve Online API dengan Python.
Saya telah berhasil menarik data XML dari server mereka.
Saya mencoba mengambil nilai dari node yang disebut "nama":
from xml.dom.minidom import parse
dom = parse("C:\\eve.xml")
name = dom.getElementsByTagName('name')
print name
Ini tampaknya menemukan node, tetapi outputnya di bawah:
[<DOM Element: name at 0x11e6d28>]
Bagaimana saya bisa mendapatkannya untuk mencetak nilai node?
Jawaban:
Seharusnya begitu
sumber
Mungkin sesuatu seperti ini jika itu bagian teks yang Anda inginkan ...
Bagian teks dari sebuah simpul dianggap sebagai simpul itu sendiri ditempatkan sebagai simpul anak dari yang Anda minta. Jadi, Anda akan ingin menelusuri semua anaknya dan menemukan semua simpul anak yang merupakan simpul teks. Sebuah node dapat memiliki beberapa node teks; misalnya.
Anda menginginkan 'blabla' dan 'znylpx'; maka "" .join (). Anda mungkin ingin mengganti spasi dengan baris baru atau lebih, atau mungkin tidak sama sekali.
sumber
Anda dapat menggunakan sesuatu seperti ini. Itu berhasil untuk saya
sumber
Saya tahu pertanyaan ini sudah cukup lama sekarang, tetapi saya pikir Anda mungkin akan lebih mudah menggunakan ElementTree
Saya tahu itu tidak super spesifik, tetapi saya baru saja menemukannya, dan sejauh ini jauh lebih mudah untuk memahami daripada minidom (karena begitu banyak node pada dasarnya adalah ruang putih).
Misalnya, Anda memiliki nama tag dan teks yang sebenarnya, seperti yang mungkin Anda harapkan:
sumber
Jawaban diatas benar yaitu:
Namun bagi saya, seperti orang lain, nilai saya jauh di bawah pohon:
Untuk menemukan ini saya menggunakan yang berikut:
Menjalankan ini untuk file SVG sederhana saya yang dibuat dengan Inkscape, ini memberi saya:
Saya menggunakan xml.dom.minidom, berbagai bidang dijelaskan di halaman ini, MiniDom Python.
sumber
Saya memiliki kasus serupa, yang berhasil untuk saya adalah:
name.firstChild.childNodes [0] .data
XML seharusnya sederhana dan memang begitu dan saya tidak tahu mengapa minidom python melakukannya begitu rumit ... tapi begitulah cara membuatnya
sumber
Berikut adalah jawaban Henrik yang sedikit dimodifikasi untuk beberapa node (mis. Ketika getElementsByTagName mengembalikan lebih dari satu instance)
sumber
Pertanyaan sudah terjawab, kontribusi saya adalah mengklarifikasi satu hal yang mungkin membingungkan pemula:
Beberapa dari jawaban yang disarankan dan benar digunakan
firstChild.data
dan yang lainnya digunakanfirstChild.nodeValue
sebagai gantinya. Jika Anda bertanya-tanya apa perbedaan di antara mereka, Anda harus ingat mereka melakukan hal yang sama karenanodeValue
hanya alias untukdata
.Referensi ke pernyataan saya dapat ditemukan sebagai komentar di kode sumber minidom :
sumber
Itu pohon, dan mungkin ada elemen bersarang. Mencoba:
sumber