Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何避免逃跑&;“逃跑时”;使用\&;引用;_Java_Xml_Dom_Domdocument_Createtextnode - Fatal编程技术网

Java 如何避免逃跑&;“逃跑时”;使用\&;引用;

Java 如何避免逃跑&;“逃跑时”;使用\&;引用;,java,xml,dom,domdocument,createtextnode,Java,Xml,Dom,Domdocument,Createtextnode,作为一项特殊要求,我一直试图在使用DOM编写XML时,用\“避开” 不幸的是,当我使用Document.createTextNode(TextValue)编写文本时,它会输出\&;引用。但是,预期的结果是\“ 详情: 写入文本值: public static boolean setDOMElementValue(Document doc, Element elem, String nodeValue) { try { elem.appendChild(doc

作为一项特殊要求,我一直试图在使用
DOM
编写
XML
时,用
\“
避开

不幸的是,当我使用
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;
    }
}

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

要获得更好的帮助,请尽快,将您的代码发布为演示您的问题的示例。这允许用户复制/粘贴和复制您的问题。您可以使用强制
转换器
不逃避任何内容。然而,这意味着您需要手动转义所需的字符…@Boris the Spider这种方式听起来不错,不过,这只会创建一个文本文件结构。在这种情况下无法帮助。用
\”转义
:它有什么用?听起来你想转换成HTML,而不是XML。是的,这是HTML,但它是XML中的一个节点文本值。OP称,这是一项特殊要求,应该在以后按原样阅读并转换为HTMLI,我认为这是可以理解的。问题是如何强制转换器在文本节点中转义引号?我明白了,我不认为XSLT1.0转换器可以强制这样做。使用类似Saxon的XSLT2.0,您需要将标识转换与字符映射一起使用,以根据需要映射引号字符。@Martin Honnen,是的,蜘蛛Boris说的是正确的。此报价是一项特殊要求。通常DOM序列化程序会处理标准转义,但这是一个例外。我更愿意坚持我现有的代码结构,因为它必须为此进行大量更改。