XML parsing expatriados em python manipulação de dados
-
16-09-2019 - |
Pergunta
Eu estou tentando analisar um arquivo XML usando python expatriados. Eu tenho a seguinte linha no meu arquivo XML:
<Action><fail/></Action>
expatriados identifica as tags de início e fim, mas converte a & lt; ao menos de caráter e o mesmo para o maior do caráter e, portanto, analisa-lo como este:
resultado:
START 'Action'
DATA '<'
DATA 'fail/'
DATA '>'
END 'Action'
em vez do desejado:
START 'Action'
DATA '<fail/>'
END 'Action'
Eu gostaria de ter o resultado desejado, como posso impedir expatriados de bagunçar?
Solução
expatriados não atrapalhar, <
é simplesmente o XML codificação para o <
personagem. Muito pelo contrário, se expatriados voltaria a <
literal, isso seria um erro com relação à especificação XML. Dito isto, você pode, naturalmente, obter a versão traseira escapou usando xml.sax.saxutils.escape
:
>>> from xml.sax.saxutils import escape
>>> escape("<fail/>")
'<fail/>'
O analisador expatriados também é livre para relatar todos os dados de cadeia em qualquer pedaços que parece em forma, então você tem que concatenar-los você mesmo.
Outras dicas
Ambos sax e StAX analisadores são livres para quebrar as cordas da maneira que for conveniente para eles (embora StAX tem um modo COALESCE para forçá-lo a montar as peças para você).
A razão é que muitas vezes é possível software de escrita em certos casos, que córregos e não precisa se preocupar com a sobrecarga de remontar os fragmentos de cadeia.
Normalmente eu acumular texto em uma variável e usar o conteúdo quando vejo a próxima startElement ou evento EndElement. Nesse ponto, eu também redefinir a variável de texto acumulado para esvaziar.