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