[英]Why does calling setTextContent not appear in the transformed output?
The following dom manipulation should result in a different output, but it doesn't. 以下dom操作应导致不同的输出,但不会。 The println indicates it has worked, but the root node.toString() or using a Transformer fails with equal results. println指示它已经工作,但是根节点node.toString()或使用Transformer失败,结果相同。
private void markNewLinesInTextNodes(Node node) {
for(int i = 0 ; i < node.getChildNodes().getLength() ; i++) {
Node child = node.getChildNodes().item(i);
markNewLinesInTextNodes(child);
}
if (node instanceof Element) {
Element el = (Element) node;
if (el.getTagName().toLowerCase().equals("text")) {
el.setTextContent(el.getTextContent().replaceAll("\n", "_LINEBREAK_"));
System.out.println(el.getTextContent());
}
}
}
this works: 这有效:
if (el.getTagName().toLowerCase().equals("text")) {
el.setTextContent(el.getTextContent().replaceAll("\n", "_LINEBREAK_"));
System.out.println(el.getTextContent());
Then : 然后 :
are you sure of the selection ? 您确定选择吗?
how do you output it ? 你怎么输出呢?
try that: 尝试:
TransformerFactory transFactory = TransformerFactory.newInstance();
Transformer transformer = transFactory.newTransformer();
StringWriter buffer = new StringWriter();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
transformer.transform(new DOMSource(document),
new StreamResult(buffer));
String result= buffer.toString();
System.out.println(result);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.