使用SAX在Python中编写XML

2024-05-20 21:37:30 发布

您现在位置:Python中文网/ 问答频道 /正文

看看Python SAX documentation我只看到使用SAX读取XML。但我想它。
不久前我就知道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更好的方法是什么?在


Tags: innewxmloutserializerpwhdsax
2条回答

我不知道Python中有没有类似SAX的直接方法;但是我为此编写了一个库,可能对您有用。它提供了打开和关闭元素、创建pis、注释、doctype等的方法。它有相当多的高级特性,比如跟踪哪些元素和继承的xml:lang值(如果有)正在运行,正在为您执行所有转义(甚至为属性中的uri进行%xx转义),像“closeToElement(type)”等等,我发现从Python生成WF-XML变得更加容易。如果感兴趣,请到http://www.derose.net/steve/utilities/PY/XmlOutput.py。在

相关问题 更多 >