简体   繁体   English

为什么调用setTextContent不会出现在转换后的输出中?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM