/
Letta21
/
HWAbstrInheritance
Обзор
Документация
Войти
/
Letta21
/
HWAbstrInheritance
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
XMLwork
158 строк
6 KB
Letta21
create XMLwork
09 янв 2026, 19:25
09 янв 2026, 19:25
1fbf794
Код
Авторство
О чём код?
import org.w3c.dom.*; import org.xml.sax.SAXException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import java.io.File; import java.io.IOException; public class XMLMain { public static void main(String[] args) { // 1. Создаем фабрику и строителя документа DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = null; try { builder = factory.newDocumentBuilder(); } catch (ParserConfigurationException e) { e.printStackTrace(); return; } // 2. Парсим файл Document doc = null; try { doc = builder.parse(new File("company.xml")); } catch (SAXException | IOException e) { e.printStackTrace(); return; } // 3. Получаем корневой элемент Node root = doc.getDocumentElement(); System.out.println("Корневой элемент: " + root.getNodeName()); // 4. Запускаем рекурсивный обход, начиная с корня read(root); } // Рекурсивный метод для обхода узлов private static void read(Node node) { NodeList nodeList = node.getChildNodes(); for (int i = 0; i < nodeList.getLength(); i++) { Node node_ = nodeList.item(i); // Проверяем, что узел является ЭЛЕМЕНТОМ (т.е. тегом, а не пробелом или текстом) if (Node.ELEMENT_NODE == node_.getNodeType()) { System.out.println("Текущий узел: " + node_.getNodeName()); Element element = (Element) node_; NamedNodeMap map = element.getAttributes(); // Вывод атрибутов текущего узла for (int a = 0; a < map.getLength(); a++) { String attrName = map.item(a).getNodeName(); String attrValue = map.item(a).getNodeValue(); System.out.println("Атрибут: " + attrName + "; значение: " + attrValue); } // Рекурсивный вызов для дочерних элементов read(node_); } } // Создание и запись XML документа в файл DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = null; try { builder = factory.newDocumentBuilder(); } catch (ParserConfigurationException e) { throw new RuntimeException(e); } Document document = builder.newDocument(); //Содержимое файла: Element root = document.createElement("root"); document.appendChild(root); Element company = document.createElement("company"); root.appendChild(company); Element equipment = document.createElement("equipment"); company.appendChild(equipment); Element staff = document.createElement("staff"); company.appendChild(staff); Element employee = document.createElement("employee"); employee.setAttribute("id", "3"); employee.setAttribute("firstname", "Nikita"); employee.setAttribute("lastname", "Shumskii"); staff.appendChild(employee); Element tool = document.createElement("tool"); tool.appendChild(document.createTextNode("123456")); employee.appendChild(tool); /* <?xml version="1.0" encoding="UTF-8" standalone="no"?> <root> <company> <equipment/> <staff> <employee firstname="Nikita" id="3" lastname="Shumskii"> <tool>123456</tool> </employee> </staff> </company> </root>*/ DOMSource domSource = new DOMSource(document); StreamResult streamResult = new StreamResult(new File("new_company.xml")); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = null; try { transformer = transformerFactory.newTransformer(); } catch (TransformerConfigurationException e) { throw new RuntimeException(e); } try { transformer.transform(domSource, streamResult); } catch (TransformerException e) { throw new RuntimeException(e); } //Редактирование XML документа /* DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(new File("company.xml")); NodeList nodeList = doc.getElementsByTagName("employee");*/ for (int i = 0; i < nodeList.getLength(); i++) { node = nodeList.item(i); if (Node.ELEMENT_NODE == node.getNodeType()) { Element element = (Element) node; if (Node.ELEMENT_NODE == node.getNodeType()) { element = (Element) node; if (element.getAttribute("id").equals("2")) { element.getElementsByTagName("tool").item(0).setTextContent("124562"); } } } } domSource = new DOMSource(document); streamResult = new StreamResult(new File("company.xml")); transformerFactory = TransformerFactory.newInstance(); try { transformer = transformerFactory.newTransformer(); } catch (TransformerConfigurationException e) { throw new RuntimeException(e); } try { transformer.transform(domSource, streamResult); } catch (TransformerException e) { throw new RuntimeException(e); } } }