Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvSpXmWrt 229 of 322 menu
◀ ▶

Запись XML в файл в Java

Строку разметки можно сразу отправить в файл. Тот же Transformer принимает StreamResult, привязанный к пути на диске, а не только к буферу в памяти:

import org.w3c.dom.Document; import org.w3c.dom.Element; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import java.nio.file.Path; public class Main { public static void main(String[] args) throws Exception { var builder = DocumentBuilderFactory.newInstance() .newDocumentBuilder(); Document doc = builder.newDocument(); Element root = doc.createElement("root"); doc.appendChild(root); Element note = doc.createElement("note"); note.setTextContent("memo"); root.appendChild(note); Path target = Path.of("memo.xml"); TransformerFactory.newInstance().newTransformer() .transform( new DOMSource(doc), new StreamResult(target.toFile()) ); } }

После записи файл можно разобрать тем же DocumentBuilder, передав File или Path:

import org.w3c.dom.Element; import javax.xml.parsers.DocumentBuilderFactory; import java.nio.file.Path; public class Main { public static void main(String[] args) throws Exception { Path target = Path.of("memo.xml"); var doc = DocumentBuilderFactory.newInstance() .newDocumentBuilder() .parse(target.toFile()); Element note = (Element) doc .getElementsByTagName("note") .item(0); System.out.println(note.getTextContent()); } }

Если документ уже превращён в строку, подойдёт Files.writeString из пакета java.nio.file. Так проще править текст вручную, но дерево DOM при этом не обновляется само по себе.

Соберите корень report с тегом title и текстом "daily". Запишите документ в файл report.xml, снова разберите его и выведите заголовок в консоль.

Создайте два тега item с текстами "one" и "two" под корнем list. Сохраните разметку в list.xml, прочитайте файл и напечатайте текст каждого item в цикле.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить