正如您在XML代码上看到的那样,每个pais
的{{1}}带有标签idiomas
,并且每个都有他的属性,我无法显示。我只是每个人中的第一个,但不是全部。
XML:
idioma
我正在显示我在此处尝试的代码,该代码仅向我显示元素<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE paises SYSTEM "Paises_DTD.dtd">
<paises>
<pais id="p1">
<nombre>España</nombre>
<habitantes>46423034</habitantes>
<extension unidad="km2">504645</extension>
<gobierno tipo="monarquia" fecha="1978"/>
<idiomas>
<idioma nombre="castellano"/>
<idioma nombre="catalan"/>
<idioma nombre="euskera"/>
<idioma nombre="gallego"/>
</idiomas>
</pais>
<pais id="p2">
<nombre>Irán</nombre>
<habitantes>79853900</habitantes>
<extension unidad="km2">1648195</extension>
<gobierno tipo="republica_islamica" fecha="1979"/>
<idiomas>
<idioma nombre="persa"/>
</idiomas>
</pais>
<pais id="p3">
<nombre>Alemania</nombre>
<habitantes>81292400</habitantes>
<extension unidad="km2">357168</extension>
<gobierno tipo="republica_federal" fecha="1990"/>
<idiomas>
<idioma nombre="aleman"/>
</idiomas>
</pais>
<pais id="p4">
<nombre>Estados Unidos de América</nombre>
<habitantes>316017000</habitantes>
<extension unidad="km2">9371174</extension>
<gobierno tipo="republica_federal"/>
<idiomas>
<idioma nombre="ingles"/>
</idiomas>
</pais>
<pais id="p5">
<nombre>Líbano</nombre>
<habitantes>6006668</habitantes>
<extension unidad="km2">10400200</extension>
<gobierno tipo="republica_parlamentaria"/>
<idiomas>
<idioma nombre="árabe"/>
<idioma nombre="francés"/>
<idioma nombre="armenio"/>
<idioma nombre="español"/>
<idioma nombre="portugués"/>
</idiomas>
</pais>
<pais id="p6">
<nombre>Madagascar</nombre>
<habitantes>24430325</habitantes>
<extension unidad="km2">5870410</extension>
<gobierno tipo="republica"/>
<idiomas>
<idioma nombre="malgache"/>
<idioma nombre="francés"/>
</idiomas>
</pais>
</paises>
中的一个属性:
idioma
本来应该显示每个Pais中from lxml import etree
doc = etree.parse('Paises_XML.xml')
raiz=doc.getroot()
paises=doc.findall("pais")
print("""
DATOS SOBRE IDIOMAS EN CADA PAIS
1- España
2- Irán
3- Alemania
4- EEUU
5- Libano
6- Madagascar
7- Salir
""")
valid_choices = ["1", "2", "3", "4", "5", "6"]
while True:
eleccion=input("Introduzca un número referente a un país de la lista observable: ")
if eleccion in valid_choices:
index = int(eleccion) - 1
print("")
print (paises[index].find("nombre").text)
print (paises[index].find("idiomas/idioma").attrib)
elif eleccion== "7":
print("")
print("¡Hasta pronto!")
break
else:
print("Opción no válida, elija un número del 1 al 6 para mostrar la información del país correspondiente")
的所有属性,但是我不知道该怎么做,所以这就是为什么我来这里
答案 0 :(得分:0)
您应该遍历“成语”。请参见下面的代码。
(56331871.xml是您发布的数据)
from lxml import etree
doc = etree.parse('56331871.xml')
raiz = doc.getroot()
paises = doc.findall("pais")
print("""
DATOS SOBRE IDIOMAS EN CADA PAIS
1- España
2- Irán
3- Alemania
4- EEUU
5- Libano
6- Madagascar
7- Salir
""")
valid_choices = ["1", "2", "3", "4", "5", "6"]
while True:
eleccion = input("Introduzca un número referente a un país de la lista observable: ")
if eleccion in valid_choices:
index = int(eleccion) - 1
print("")
print(paises[index].find("nombre").text)
idiomas = paises[index].findall("idiomas/idioma")
for idioma in idiomas:
print(idioma.attrib)
elif eleccion == "7":
print("")
print("¡Hasta pronto!")
break
else:
print("Opción no válida, elija un número del 1 al 6 para mostrar la información del país correspondiente")