Pergunta

Eu tenho algum código IronPython que faz uso de XmlTextWriter que me permite escrever código como

self.writer = System.Xml.XmlTextWriter(filename, None)
self.writer.Formatting = Formatting.Indented
self.writer.WriteStartElement(name)
self.writer.WriteString(str(text))
self.writer.WriteEndElement()

...

self.writer.Close()

Eu gostaria de fazer o meu código portátil através de Python implementações (CPython, IronPython e Jython). Existe um streaming de Python escritor XML eu posso usar para isso sem a necessidade de usar tanto instruções de impressão, ou para construir uma árvore DOM inteiro antes de escrevê-lo para arquivo?

Foi útil?

Solução

Eu escrevi um módulo chamado loxun para fazer exatamente isso: http://pypi.python.org / pypi / loxun / . Ele é executado com CPython 2,5 e Jython 2.5, mas eu nunca tentei com IronPython.

Exemplo de utilização:

with open("...", "wb") as out:
  xml = XmlWriter(out)
  xml.addNamespace("xhtml", "http://www.w3.org/1999/xhtml")
  xml.startTag("xhtml:html")
  xml.startTag("xhtml:body")
  xml.text("Hello world!")
  xml.tag("xhtml:img", {"src": "smile.png", "alt": ":-)"})
  xml.endTag()
  xml.endTag()
  xml.close()

E o resultado:

<?xml version="1.0" encoding="utf-8"?>
<xhtml:html xlmns:xhtml="http://www.w3.org/1999/xhtml">
  <xhtml:body>
    Hello world!
    <xhtml:img alt=":-)" src="smile.png" />
  </xhtml:body>
</xhtml:html>

Entre outras características, ele detecta marcas missalligned enquanto você escreve, usa uma API de streaming com uma pequena pegada de memória, suporte a Unicode e permite a impressão muito desativar.

Outras dicas

Eu nunca usei a implementação .NET que você está falando, mas parece que o mais próximo que você vai conseguir é Python de SAX parser (especificamente, a classe XMLGenerator - um código de exemplo aqui ).

Eu escrevi uma ferramenta para facilitar a geração de XML a partir de Python ( código tutorial )

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