使用SAX在Python中编写XML

问题描述 投票:2回答:2

看看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的更好方法是什么?

java python xml saxparser
2个回答

0
投票

我不知道Python中直接类似于SAX的方式;但我为此写了一个可能对你有用的库。它提供了打开和关闭元素,制作pis,注释,doctypes等的方法。它具有一系列更高级别的功能,比如跟踪哪些元素和继承的xml:lang值(如果有的话)在起作用,所有的转义(甚至%xx转义为属性中的URI),以及“closeToElement(type)”等等。我发现它可以更容易地从Python生成WF XML。如果感兴趣的话,在http://www.derose.net/steve/utilities/PY/XmlOutput.py

© www.soinside.com 2019 - 2024. All rights reserved.