Ler e editar um xml Existente
Carregar o objeto.
>>> xml0 = xml.dom.minidom.parse(“c:\\teste\\novo.xml”)
Imprima na tela para ver se foi carregado mesmo e verifique o conteudo
>>> print xml0.toxml()
<?xml version=”1.0″ ?><usuarios><user id=”1″ login=”bruno-tuy”>Bruno Tuy</user><user id=”2″ login=”bruno.reis”>Bruno Reis</user><user id=”3″ login=”lucas.mendes”>Lucas Mendes</user><user id=”4″ login=”bruno”>_Bruno_</user></usuarios>
Aqui ele retornou desse jeito ai, sem quebra de linha e indentação, é a maneira ideal de salvar o xml pois assim o programa trabalha com ele perfeitamente bem, se o seu retornou um xml com quebras de linhas e indentação vai acontecer o seguinte, o python vai entender que o enter(\n) são filhos também, ai você vai ter que tratar isso.
Agora vamos ler os atributos da primeira tag do xml.
>>> print “Id: ” + xml0.firstChild.childNodes[0].getAttribute(“id”)
Id: 1
>>> print “Login: ” + xml0.firstChild.childNodes[0].getAttribute(“login”)
Login: bruno-tuy
>>> print “Nome: ” + xml0.firstChild.childNodes[0].firstChild.data
Nome: Bruno Tuy
Imprimir o atributo login da tag de id 2
>>> for filho in xml0.firstChild.getElementsByTagName(“user”):
if (filho.getAttribute(“id”) == “2″):
print filho.getAttribute(“login”)
bruno.reis
– getElementsByTagName(“user”) pode ser substituido por childNodes
Apagar alguma tag
>>> xml0.firstChild.removeChild( xml0.firstChild.childNodes[2] )
<DOM Element: user at 0x23c16c0>
>>> print xml0.toxml()
<?xml version=”1.0″ ?><usuarios><user id=”1″ login=”bruno-tuy”>Bruno Tuy</user><user id=”2″ login=”bruno.reis”>Bruno Reis</user><user id=”4″ login=”bruno”>_Bruno_</user></usuarios>
– Repare que o usuario com id 3 foi removido
Mudar atributos de uma tag
>>> xml0.firstChild.childNodes[0].setAttribute(“login”, “bruno.tuy”)
>>> print xml0.toxml()
<?xml version=”1.0″ ?><usuarios><user id=”1″ login=”bruno.tuy”>Bruno Tuy</user><user id=”2″ login=”bruno.reis”>Bruno Reis</user><user id=”4″ login=”bruno”>_Bruno_</user></usuarios>
– Veja que o atributo login da tag com id 1 foi alterado.
Mudar texto contido entre as tags
>>> xml0.firstChild.childNodes[2].firstChild.nodeValue = “Bruno”
>>> print xml0.toxml()
<?xml version=”1.0″ ?><usuarios><user id=”1″ login=”bruno.tuy”>Bruno Tuy</user><user id=”2″ login=”bruno.reis”>Bruno Reis</user><user id=”4″ login=”bruno”>Bruno</user></usuarios>
salvar tudo
>>> arq = file(“c:\\teste\\novo.xml”, “w”)
>>> xml0.writexml(arq)
>>> arq.close()