ObjectWriterImplXmlNode.java
package com.alibaba.fastjson2.writer;
import com.alibaba.fastjson2.JSONException;
import com.alibaba.fastjson2.JSONWriter;
import org.w3c.dom.Node;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.StringWriter;
import java.lang.reflect.Type;
public class ObjectWriterImplXmlNode
implements ObjectWriter {
static final ObjectWriterImplXmlNode INSTANCE = new ObjectWriterImplXmlNode();
static final TransformerFactory TRANSFORMER_FACTORY;
static {
try {
TRANSFORMER_FACTORY = TransformerFactory.newInstance();
} catch (Exception e) {
throw new JSONException("init xml TransformerFactory error", e);
}
}
@Override
public void write(JSONWriter jsonWriter, Object object, Object fieldName, Type fieldType, long features) {
if (object == null) {
jsonWriter.writeNull();
return;
}
try {
Transformer transformer = TRANSFORMER_FACTORY.newTransformer();
DOMSource domSource = new DOMSource((Node) object);
StringWriter writer = new StringWriter();
transformer.transform(domSource, new StreamResult(writer));
jsonWriter.writeString(writer.toString());
} catch (Exception e) {
throw new JSONException("write xml node error", e);
}
}
}