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