/
geriot
/
json
Обзор
Документация
Войти
/
geriot
/
json
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/main/java/XmlToJsonConverter.java
98 строк
4 KB
geriot
upload files
10 май 2025, 09:56
10 май 2025, 09:56
74c4a44
Код
Авторство
О чём код?
import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; import org.w3c.dom.Document; import org.w3c.dom.NodeList; import org.w3c.dom.Node; import org.w3c.dom.Element; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; import static java.nio.file.Files.writeString; public class XmlToJsonConverter { public static void main(String[] args) { try { // Получение списка сотрудников из XML файла List<Employee> list = parseXML("data.xml"); // Преобразование списка в JSON строку String json = listToJson(list); // Запись JSON в файл data2.json writeString(json, "data2.json"); System.out.println("Файл data2.json успешно создан!"); } catch (Exception e) { System.err.println("Ошибка: " + e.getMessage()); e.printStackTrace(); } } /** * Парсинг XML файла в список объектов Employee */ public static List<Employee> parseXML(String fileName) throws Exception { // Создание Document из XML файла File xmlFile = new File(fileName); DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); Document doc = dBuilder.parse(xmlFile); // Получение корневого элемента Element rootElement = doc.getDocumentElement(); // Получение всех employee-элементов NodeList employeeList = rootElement.getElementsByTagName("employee"); List<Employee> employees = new ArrayList<>(); // Обработка каждого employee-элемента for (int i = 0; i < employeeList.getLength(); i++) { Node employeeNode = employeeList.item(i); if (employeeNode.getNodeType() == Node.ELEMENT_NODE) { Element employeeElement = (Element) employeeNode; // Извлечение значений из элементов long id = Long.parseLong(employeeElement.getElementsByTagName("id").item(0).getTextContent()); String firstName = employeeElement.getElementsByTagName("firstName").item(0).getTextContent(); String lastName = employeeElement.getElementsByTagName("lastName").item(0).getTextContent(); String country = employeeElement.getElementsByTagName("country").item(0).getTextContent(); int age = Integer.parseInt(employeeElement.getElementsByTagName("age").item(0).getTextContent()); employees.add(new Employee(id, firstName, lastName, country, age)); } } return employees; } public static String listToJson(List<Employee> list) { // Создание Gson-объекта с форматированием Gson gson = new GsonBuilder() .setPrettyPrinting() .create(); // Получение типа списка Type listType = new TypeToken<List<Employee>>() {}.getType(); return gson.toJson(list, listType); } /** * Запись JSON строки в файл */ public static void writeString(String content, String fileName) throws IOException { try (FileWriter writer = new FileWriter(fileName)) { writer.write(content); } } }