如何避免逃避&逃避“与”

时间:2013-11-07 13:53:05

标签: java xml dom domdocument createtextnode

作为一项特殊要求,我在使用"撰写\"时尝试使用XML转义DOM

不幸的是,当我使用Document.createTextNode(TextValue)撰写文字时,会输出\"。但是,预期为\"

详细说明:

编写文本值:

    public static boolean setDOMElementValue(Document doc, Element elem, String nodeValue) {
    try {
        elem.appendChild(doc.createTextNode(nodeValue));
        return true;
    } catch (DOMException ex) {
        LOG.log(Level.SEVERE, ex.toString());
        return false;
    }
}

编写XML:

    public static boolean writeDOMToXML(Document doc, String xmlFilePath) {
    try {
        doc.setXmlStandalone(true);
        // write content into xml file

        // Creating TransformerFactory and Transformer
        Transformer tr = TransformerFactory.newInstance().newTransformer();
        // Setting Transformer's output properties
        tr.setOutputProperty(OutputKeys.INDENT, "yes");
        tr.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
        tr.setOutputProperty(OutputKeys.METHOD, "xml");
        tr.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
        tr.setOutputProperty(OutputKeys.STANDALONE, "no");

        // Setting DOMSource and StreamResult
        DOMSource source = new DOMSource(doc);
        File file = new File(xmlFilePath);
        StreamResult result = new StreamResult(new OutputStreamWriter(new FileOutputStream(file)));

        // Transform and Return
        tr.transform(source, result);
        return true;
    } catch (TransformerFactoryConfigurationError | TransformerConfigurationException ex) {
        LOG.log(Level.SEVERE, ex.toString());

        return false;
    } catch (TransformerException | FileNotFoundException ex) {
        LOG.log(Level.SEVERE, ex.toString());
        return false;
    }
}

1 个答案:

答案 0 :(得分:0)

当您使用DOM构建文本节点时,您应该简单地在其中插入任何字符串,例如doc.createTextNode("\"")。当您序列化DOM树时,序列化程序将根据需要处理任何字符转义(但在文本节点内不需要转义双引号或单引号,这只需要在属性值内,具体取决于属性值分隔符)。