【问题标题】:Converting a org.w3c.dom.Document in Java to String using Transformer使用 Transformer 将 Java 中的 org.w3c.dom.Document 转换为字符串
【发布时间】:2014-04-27 15:55:14
【问题描述】:

我正在尝试使用 Transformer 将 XML org.w3c.dom.Document 转换为字符串:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

    factory.setNamespaceAware(true);
    DocumentBuilder builder = null;
    try {
        builder = factory.newDocumentBuilder();
    } catch (ParserConfigurationException e) {

        e.printStackTrace();
    }

    Document doc = builder.newDocument();

    Element gameNode = doc.createElement("Game");
    gameNode.setAttribute("gameID", String.valueOf(game.getGameID()));
    gameNode.setAttribute("username", game.getUsername());
    gameNode.setAttribute("gameStartTime", String.valueOf(game.getGameStartTime()));
    gameNode.setAttribute("gameStartDate", String.valueOf(game.getGameStartDate()));
    gameNode.setAttribute("totalScore", String.valueOf(game.getTotalScore()));
    gameNode.setAttribute("totalTimeInSeconds", String.valueOf(game.getTotalTimeInSeconds()));
    gameNode.setAttribute("lastLevel", String.valueOf(game.getLastLevel()));
    gameNode.setAttribute("firstLevel", String.valueOf(game.getFirstLevel()));

    doc.appendChild(gameNode);



    for(int i = 0 ; i < game.getScores().size(); i++)
    {
        Element scoreNode = doc.createElement("Score");
        scoreNode.setAttribute("gameID", String.valueOf(game.getScores().get(i).getGameID()));
        scoreNode.setAttribute("points", String.valueOf(game.getScores().get(i).getPoints()));
        scoreNode.setAttribute("levelOfScore", String.valueOf(game.getScores().get(i).getLevelOfScore()));
        scoreNode.setAttribute("timeToScore", String.valueOf(game.getScores().get(i).getTimeToScore()));

        gameNode.appendChild(scoreNode);
    }


    return DocumentToString(doc);

我正在使用我的名为 Game 和 Score 的对象,它不应该干扰这个过程。

public static String DocumentToString(Document doc)
{
    try {
        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer();
        DOMSource source = new DOMSource(doc);
        StreamResult result = new StreamResult(System.out);  
        transformer.transform(source, result); 
        return "yeah";
    } catch (Exception ex) {
        return "Error converting to String";
    }

}

由于某种原因,transformer.transform 方法没有成功完成。

【问题讨论】:

  • 告诉我们它是如何失败的!

标签: java xml string dom transformer


【解决方案1】:

这是适合我的文档转换器

public String getStringFromDoc(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.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
        transformer.transform(domSource, result);
        writer.flush();
        return writer.toString();
    }

【讨论】:

    猜你喜欢
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    • 2011-04-24
    • 1970-01-01
    • 2023-03-17
    • 2013-01-29
    • 2016-04-06
    • 1970-01-01
    相关资源
    最近更新 更多