2015-12-13 7 views
0

Следующие манипуляции с dom должны приводить к другому результату, но это не так. Функция println указывает, что она сработала, но корневой узел.toString() или с использованием Transformer не дает равных результатов.Почему вызов setTextContent не отображается в преобразованном выходе?

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()); 
     } 
    } 
    } 

ответ

0

это работает:

if (el.getTagName().toLowerCase().equals("text")) { 
    el.setTextContent(el.getTextContent().replaceAll("\n", "_LINEBREAK_")); 
    System.out.println(el.getTextContent()); 

Тогда:

  • вы уверены в выборе?

  • как вы вывести его?

попробовать что:

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); 
+0

Спасибо за проверку для меня, так что я буду отмечать это, как правильно дал информацию я предоставил. Настоящая причина заключалась в том, что [jcabi api возвращает узел] (https://github.com/jcabi/jcabi-xml/blob/master/src/main/java/com/jcabi/xml/XMLDocument.java # L284), но вы не могли этого знать. Еще раз спасибо. –