将java xml sax事件调用转换为xml字符串

将java xml sax事件调用转换为xml字符串,java,xml,serialization,deserialization,sax,Java,Xml,Serialization,Deserialization,Sax,JavaXMLSAXAPI是否提供了一个ContentHandler子类,用于将事件调用转换为xml字符串。例如,对该处理程序的以下调用应生成以下xml: XMLPrinterHandler h; String data = "hello"; h.startDocument(); h.startElement("", "element", "element", new Attributes()); h.characters(h.toCharArray(), 0, h.size()); h.end

JavaXMLSAXAPI是否提供了一个
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
,并希望了解中间输出。encoding类接受一个
ContentHandler
,并调用相应的方法对数据进行编码。

您需要:

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实现。)

我个人发现,作为SAX
ContentHandler
接口的直接客户机编写Java代码非常笨拙。我更喜欢
XMLStreamWriter
接口