DocumentBuilder создает различные объекты DOM для строки XML с переводами строки и строки XML без перевода строки. Вот код, который я тестировал:
StringBuilder sb = new StringBuilder();
sb.append("<root>").append(newlineChar).append("<A>").append("</A>").append(newlineChar).append("<B>tagB").append("</B>").append("</root>");
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
InputStream xmlInput = new ByteArrayInputStream(sb.toString().getBytes());
Element documentRoot = builder.parse(xmlInput).getDocumentElement();
NodeList nodes = documentRoot.getChildNodes();
System.out.println("How many children does the root have? => "nodes.getLength());
for(int index = 0; index < nodes.getLength(); index++){
System.out.println(nodes.item(index).getLocalName());
}
Выход:
<br>How many children does the root have? => 4
<br>null
<br> A
<br>null<br>
B
Но если новый newlineChar
удален из StringBuilder,
Выходной результат:
<br>How many children does the root have? => 2
<br>A
<br>B</p>
<p>
Это демонстрирует, что объекты DOM, сгенерированные DocumentBuilder, отличаются.