Estou criando um front-end GUI para a API Eve Online em Python.
Eu obtive com sucesso os dados XML de seu servidor.
Estou tentando obter o valor de um nó chamado "nome":
from xml.dom.minidom import parse
dom = parse("C:\\eve.xml")
name = dom.getElementsByTagName('name')
print name
Isso parece encontrar o nó, mas a saída está abaixo:
[<DOM Element: name at 0x11e6d28>]
Como posso fazer com que ele imprima o valor do nó?
Respostas:
Deveria ser apenas
fonte
Provavelmente algo assim se for a parte do texto que você deseja ...
A parte do texto de um nó é considerada um nó em si mesma, colocada como nó filho daquele que você solicitou. Portanto, você desejará percorrer todos os seus filhos e encontrar todos os nós filhos que são nós de texto. Um nó pode ter vários nós de texto; por exemplo.
Você quer 'blabla' e 'znylpx'; daí o "" .join (). Você pode querer substituir o espaço por uma nova linha ou algo assim, ou talvez por nada.
fonte
você pode usar algo assim. Funcionou para mim
fonte
Sei que essa pergunta é bem antiga agora, mas achei que seria mais fácil para você com ElementTree
Eu sei que não é muito específico, mas acabei de descobrir, e até agora é muito mais fácil entender do que o minidom (já que tantos nós são essencialmente espaços em branco).
Por exemplo, você tem o nome da tag e o texto real juntos, exatamente como você provavelmente esperaria:
fonte
A resposta acima está correta, a saber:
No entanto, para mim, como para outros, meu valor estava mais abaixo na árvore:
Para encontrar isso, usei o seguinte:
Executar isso para meu arquivo SVG simples criado com o Inkscape me deu:
Usei xml.dom.minidom, os vários campos são explicados nesta página, MiniDom Python.
fonte
Eu tive um caso semelhante, o que funcionou para mim foi:
name.firstChild.childNodes [0] .data
XML deveria ser simples e realmente é, e não sei por que o minidom do python tornou isso tão complicado ... mas é assim que é feito
fonte
Aqui está uma resposta ligeiramente modificada de Henrik para vários nós (ou seja, quando getElementsByTagName retorna mais de uma instância)
fonte
A pergunta foi respondida, minha contribuição consiste em esclarecer uma coisa que pode confundir os iniciantes:
Algumas das respostas sugeridas e corretas usadas
firstChild.data
e outras usadas em seufirstChild.nodeValue
lugar. Caso você esteja se perguntando qual é a diferença entre eles, lembre-se de que fazem a mesma coisa porquenodeValue
é apenas um apelido paradata
.A referência à minha declaração pode ser encontrada como um comentário sobre o código-fonte do minidom :
fonte
É uma árvore e pode haver elementos aninhados. Experimentar:
fonte