如何避免转义和逃避"与\"

Ind*_*igo 5 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

编写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;
    }
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*nen 0

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