Java 使用SAX在Python中编写XML
查看示例,我只看到使用SAX读取XML。但是我想写它。Java 使用SAX在Python中编写XML,java,python,xml,saxparser,Java,Python,Xml,Saxparser,查看示例,我只看到使用SAX读取XML。但是我想写它。我不久前就知道了: public void renderXML(OutputStream out) { PrintWriter pw = new PrintWriter(out); StreamResult streamResult = new StreamResult(pw); SAXTransformerFactory tf = (SAXTransformerFactory) TransformerF
我不久前就知道了:
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的方法,但这是DOM的方法(对于真正大的输出来说是有问题的)。没有人回答。或者:用Python编写XML的更好方法是什么?我不知道Python中有哪种类似SAX的直接方式;但我为此写了一个图书馆,也许对你有用。它提供了打开和关闭元素、创建PI、注释、doctype等方法。它有一系列更高级别的功能,比如跟踪哪些元素和继承的xml:lang值(如果有的话)、为您执行所有转义(甚至为属性中的URI进行%xx转义)以及类似“closeToElement(type)”之类的内容我发现从Python生成WFXML要容易得多。如果有兴趣,请访问。以《圣经》为例,请看。对于非常大的XML,一个“不那么优雅,但很实用”的解决方案是使用模板引擎(例如Cheetah:)