java xml sax api是否提供ContentHandler
子类,它将事件调用转换为xml字符串。例如,对该处理程序的以下调用应产生以下xml
:
XMLPrinterHandler h;
String data = "hello";
h.startDocument();
h.startElement("", "element", "element", new Attributes());
h.characters(h.toCharArray(), 0, h.size());
h.endElement("", "element", "element");
h.endDocument();
System.out.println(h.getXml());
这应该打印:
<element>hello</element>
我正在处理一些将某些数据编码为xml
的代码,并且想知道中间输出。编码类接受一个ContentHandler
并对其调用适当的方法来对数据进行编码。
答案 0 :(得分:0)
您要
SAXTransformerFactory f = new SAXTransformerFactory();
TransformerHandler t = new f.newTransformerHandler();
t.setResult(System.out);
t.startDocument();
etc
TransformerHandler
执行从SAX输入到词法XML输出的“空转换”。
您也可以使用
h.getTransformer().setOutputProperty()
可以根据XSLT规范中定义的属性来设置序列化属性,例如缩进。 (标准的JDK TransformerHandler
为您提供XSLT 1.0序列化属性,如果您想在XSLT 3.0中定义扩展集以及Saxon扩展,请使用Saxon实现。)
我个人发现,将Java代码作为SAX ContentHandler
接口的直接客户端编写非常笨拙。我更喜欢XMLStreamWriter
界面。