Код: Выделить всё
< /code>
И я хочу отредактировать его построить что-то вроде этого: < /p>
A name
Last Name
username
< /code>
Теперь первый запуск кода добавляет одну пустую строку перед узлом < /code>. Когда он работает на второе время заполняется более чистыми строками: < /p>
name
lastname
username
name
lastname
username
< /code>
Это XML, сгенерированный после запуска программы 2 раза. Как вы можете видеть, он добавляет пустые строки перед узлами задается вопросом, каково содержание этих узлов перед обновлением файла, который я написал следующий код: < /p>
int i=0;
while (root.getChildNodes().item(i)!=null){
Node aux = root.getChildNodes().item(i);
System.out.println("Node text content: ".concat(aux.getTextContent()));
i++;
}
< /code>
1 -е выполнение: < /p>
Node text content:
Node text content: namelastnameusername
< /code>
2nd выполнение: < /p>
Node text content:
Node text content:
name
lastname
username
Node text content:
Node text content: namelastnameusername
< /code>
3 -е выполнение < /p>
Node text content:
Node text content:
name
lastname
username
Node text content:
Node text content:
name
lastname
username
Node text content:
Node text content: namelastnameusername
< /code>
Наконец, это код Java: < /p>
private static void saveUser(String firstName, String lastName, String username){
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new File(databaseFile));
Element root = doc.getDocumentElement();
root.normalize();
// build user node
Element userNode = doc.createElement("user");
Element nameNode = doc.createElement("name");
Element lastNameNode = doc.createElement("last-name");
Element usernameNode = doc.createElement("username");
//build structure
nameNode.appendChild(doc.createTextNode(firstName));
lastNameNode.appendChild(doc.createTextNode(lastName));
usernameNode.appendChild(doc.createTextNode(username));
userNode.appendChild(nameNode);
userNode.appendChild(lastNameNode);
userNode.appendChild(usernameNode);
root.appendChild(userNode);
//write the updated document to file or console
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File(databaseFile));
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.transform(source, result);
}catch (SAXException | ParserConfigurationException | IOException | TransformerException e1) {
e1.printStackTrace();
}
}
< /code>
Единственное решение, которое я мог найти, - это удалить пустые строки после генерации XML, но я думаю, что это не правильное решение, и я хотел бы сначала найти некоторые альтернативы.>
Подробнее здесь: https://stackoverflow.com/questions/584 ... -with-java