ole*_*leh 7 java xml dom escaping ampersand
我想创建一个替换空格的XML  .但是Java-Transformer逃脱了Ampersand,因此输出就是 
这是我的示例代码:
public class Test {
public static void main(String[] args) {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.newDocument();
Element element = document.createElement("element");
element.setTextContent(" ");
document.appendChild(element);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
Transformer transformer = TransformerFactory.newInstance().newTransformer();
StreamResult streamResult = new StreamResult(stream);
transformer.transform(new DOMSource(document), streamResult);
System.out.println(stream.toString());
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的示例代码的输出:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<element>&#160;</element>
Run Code Online (Sandbox Code Playgroud)
有什么想法来修复或避免这种情况?非常感谢!
解决方案很有趣:
Node disableEscaping = document.createProcessingInstruction(StreamResult.PI_DISABLE_OUTPUT_ESCAPING, "&");
Element element = document.createElement("element");
element.setTextContent(" ");
document.appendChild(disableEscaping );
document.appendChild(element);
Node enableEscaping = document.createProcessingInstruction(StreamResult.PI_ENABLE_OUTPUT_ESCAPING, "&");
document.appendChild(enableEscaping )
Run Code Online (Sandbox Code Playgroud)
因此,基本上,您需要将代码放在转义元素之间。
将文本内容直接设置为您想要的字符,如有必要,序列化程序将为您转义它:
element.setTextContent("\u00A0");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7397 次 |
| 最近记录: |