Как избежать дополнительных пустых линий в поколении XML с Java?JAVA

Программисты JAVA общаются здесь
Anonymous
Как избежать дополнительных пустых линий в поколении XML с Java?

Сообщение Anonymous »

В настоящее время я пытаюсь разработать какой-то код с Java 9 и Javax.xml < /code> библиотеки (оба обязательны для моей задачи), которые редактируют файл XML, и у меня есть некоторые странные проблемы, добавляющие дочерние узлы.

Код: Выделить всё



< /code>

И я хочу отредактировать его построить что-то вроде этого: < /p>




A name
Last Name
username


< /code>

Теперь первый запуск кода добавляет одну пустую строку перед узлом < /code>. Когда он работает на второе время заполняется более чистыми строками: < /p>





name

lastname

username




name
lastname
username


< /code>

Это XML, сгенерированный после запуска программы 2 раза. Как вы можете видеть, он добавляет пустые строки перед узлами 
и между другими узлами, точно n-1 пустые строки между узлами n, когда код был выполнен. < /p>

задается вопросом, каково содержание этих узлов перед обновлением файла, который я написал следующий код: < /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

Вернуться в «JAVA»