【问题标题】:Writing XML in Python using SAX使用 SAX 在 Python 中编写 XML
【发布时间】:2014-03-21 08:10:56
【问题描述】:

查看Python SAX documentation 我只看到阅读 XML 使用SAX。但我想它。
我不久前想出了to do that in Java

 public void renderXML(OutputStream out) {
      PrintWriter pw = new PrintWriter(out);
      StreamResult streamResult = new StreamResult(pw);
      SAXTransformerFactory tf = (SAXTransformerFactory) TransformerFactory.newInstance();
      TransformerHandler hd = tf.newTransformerHandler();
      Transformer serializer = hd.getTransformer();
      serializer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
      serializer.setOutputProperty(OutputKeys.METHOD,"xml");
      serializer.setOutputProperty(OutputKeys.INDENT, "yes"); // So it looks pretty in VI
      hd.setResult(streamResult);
      hd.startDocument();
      AttributesImpl atts = new AttributesImpl();
      atts.addAttribute("", "", "someattribute", "CDATA", "test");
      atts.addAttribute("", "", "moreattributes", "CDATA", "test2");
      hd.startElement("", "", "MyTag", atts);
      String curTitle = "Something inside a tag";
      hd.characters(curTitle.toCharArray(), 0, curTitle.length());
      hd.endElement("", "", "MyTag");
      hd.endDocument();
   }

什么是 Python 等价物?我使用 ElementTree 检查了answer on SO - 但那是 DOM 做事的方式(对于非常大的输出来说是有问题的)。 Another question 未得到答复。或者:用 Python 写出 XML 的更好方法是什么?

【问题讨论】:

  • 对于非常大的 XML,_not_so_elegant_but_working 解决方案是使用模板引擎(例如 Cheetah:cheetahtemplate.org

标签: java python xml saxparser


【解决方案1】:

【讨论】:

    【解决方案2】:

    我不知道 Python 中有直接类似 SAX 的方式;但我为此写了一个库,可能对你有用。它提供了打开和关闭元素、制作 pis、cmets、doctypes 等的方法。它具有相当多的高级功能,例如跟踪哪些元素和继承的 xml:lang 值(如果有的话)在起作用,做为您进行的所有转义(甚至是属性中 URI 的 %xx 转义),以及诸如“closeToElement(type)”之类的内容。我发现它使从 Python 生成 WF XML 变得更加容易。如果有兴趣,请联系http://www.derose.net/steve/utilities/PY/XmlOutput.py

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-27
      • 1970-01-01
      • 1970-01-01
      • 2011-10-16
      • 1970-01-01
      • 2011-01-01
      • 2013-03-29
      • 1970-01-01
      相关资源
      最近更新 更多