Pergunta

Eu estou tentando analisar um arquivo XML usando python expatriados. Eu tenho a seguinte linha no meu arquivo XML:

<Action>&lt;fail/&gt;</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 '&lt;fail/&gt;'
END 'Action'

Eu gostaria de ter o resultado desejado, como posso impedir expatriados de bagunçar?

Foi útil?

Solução

expatriados não atrapalhar, &lt; é simplesmente o XML codificação para o < personagem. Muito pelo contrário, se expatriados voltaria a &lt; 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/>")
'&lt;fail/&gt;'

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top