I have the following XML (simplified):
<produto refid="cat01" idprod="tv01">
<marca>xxx</marca>
<modelo>xxxx</modelo>
<genero>xxx</genero>
</produto>
<v:utilizador iduser="U00000" comercial="12344" loja="xxxxx">
<nome>xxxxx</nome>
<contacto>94xxxxxx</contacto>
<email>loja@xxxxxxx</email>
<morada>xxxxxx</morada>
<localidade>xxxxxx</localidade>
<cesto>
<encomenda refidprod="rlg04" estado="enviado"/>
<encomenda refidprod="tv04" estado="enviado"/>
</cesto>
</v:utilizador>
<u:utilizador iduser="U00003" comercial="" loja="">
<nome>xxxxx</nome>
<contacto>93xxxxxx</contacto>
<email>xxxxxxxx</email>
<morada>xxxxxx</morada>
<localidade>xxxxx</localidade>
<cesto>
<encomenda refidprod="tlf04" estado="em processo"/>
</cesto>
</u:utilizador>
And I have to work out a Python code that shows all products purchased by a particular user. I've done the following:
from lxml import etree
u={'u':'Utilizador'} ##Declaração do namespace
file = "marketplace.xml"
treeDoc = etree.parse(file)
nome=str(raw_input('Insira o nome: '))
print("Cesto de " + nome)
elemList = treeDoc.xpath("//produto[./@idprod=//utilizadores/u:utilizador[./nome='"+ nome +"']/cesto/encomenda/@refidprod]/marca", namespaces=u)
for elem in elemList:
print("Item: ", elem.get("idprod"))
nameList = elem.xpath("produto")
print(nameList[0].tag, ": ", nameList[0].text)
It just does not return anything to me. Can someone tell me what the problem is? Another question: How do I get the xpath to return the two namespaces without having to do different querys?