0

POJO を Documents にシリアル化し、次に Document を文字列にシリアル化する必要があります。私は次のコードを持っています、

public static String DOMDocumentToString(Document doc) throws TransformerException
{
    DOMSource domSource = new DOMSource(doc);
    StringWriter writer = new StringWriter();
    StreamResult result = new StreamResult(writer);
    TransformerFactory tf = TransformerFactory.newInstance();
    Transformer transformer = tf.newTransformer();
    transformer.transform(domSource, result);
    writer.flush();
    return writer.toString();
}

public static <T> Document objectToDOMDocument (T object) throws ParserConfigurationException, IOException, SAXException
{
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    doc = builder.newDocument();
    ByteArrayOutputStream st = new ByteArrayOutputStream();

    XMLEncoder encoder = new XMLEncoder(st);
    encoder.writeObject(object);
    encoder.close();
    String tmp =  st.toString();
    Document doc = builder.parse(new InputSource(new StringReader(tmp)));
    return doc;
}

プロジェクトが xerces を使用しない限り、それはうまくいくようです。次にobjectToDOMDocument、ルート ノードが "document:null" の Document を返し、 at で DOMDocumentToString失敗します。DOMSource node as this type not supportedtransformer.transform(domSource, result);

DocumentBuilderFactory.newInstance(String,ClassLoader)はそのような問題がない工場名を使用して渡すことができることを知っていますが、それはより良い方法であるべきだと思います....

ご提案いただきありがとうございます。

4

0 に答える 0