Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用SAX在Python中编写XML_Java_Python_Xml_Saxparser - Fatal编程技术网

Java 使用SAX在Python中编写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

查看示例,我只看到使用SAX读取XML。但是我想写它。
我不久前就知道了:

 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:)