[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-xml-kakie-vy-znaete-sposoby-zapisi-xml":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":15,"progress":16,"seo":17},1278,"kakie-vy-znaete-sposoby-zapisi-xml",41,"xml","XML","📝","Какие вы знаете способы записи XML?","Существуют два основных способа записи XML-документов в Java: прямая (потоковая) запись и запись через DOM-дерево. Выбор зависит от того, нужно ли формировать структуру документа заранее или можно писать последовательно.\n\n### Прямая (потоковая) запись\n\nДокумент формируется тег за тегом, атрибут за атрибутом, без создания промежуточного представления в памяти. В Java это реализуется через `XMLStreamWriter` (StAX API).\n\n- Высокая скорость работы\n- Минимальный расход памяти — нет промежуточных объектов\n- Пригоден только для записи — нельзя вернуться и изменить уже записанный элемент\n- Программист отвечает за правильную вложенность тегов\n\n```java\nXMLOutputFactory factory = XMLOutputFactory.newInstance();\nXMLStreamWriter writer = factory.createXMLStreamWriter(\n    new FileOutputStream(\"output.xml\"), \"UTF-8\");\n\nwriter.writeStartDocument(\"UTF-8\", \"1.0\");\nwriter.writeStartElement(\"catalog\");\nwriter.writeStartElement(\"book\");\nwriter.writeAttribute(\"id\", \"1\");\nwriter.writeStartElement(\"title\");\nwriter.writeCharacters(\"Effective Java\");\nwriter.writeEndElement(); \u002F\u002F title\nwriter.writeEndElement(); \u002F\u002F book\nwriter.writeEndElement(); \u002F\u002F catalog\nwriter.writeEndDocument();\nwriter.close();\n```\n\n### Запись через DOM\n\nСначала формируется полное дерево документа в памяти (`Document`), затем оно сериализуется в файл через `Transformer`.\n\n- Пригоден как для чтения, так и для записи — можно модифицировать существующий документ\n- Можно произвольно добавлять\u002Fудалять узлы до записи\n- Повышенный расход памяти — все дерево хранится в куче\n- Более низкая скорость из-за создания объектов\n\n### Сравнение\n\n| Критерий | Прямая запись (StAX) | Запись через DOM |\n|----------|---------------------|-----------------|\n| Память | Минимальная | Весь документ в памяти |\n| Скорость | Высокая | Ниже |\n| Модификация | Нет (только вперед) | Да (произвольная) |\n| Чтение + запись | Нет | Да |\n| Сложность | Низкая | Умеренная |\n\n> **На собеседовании:** интервьюер хочет услышать, что прямая запись — это StAX (`XMLStreamWriter`), а DOM-запись — через `Transformer`. Частая ошибка — забыть про прямую запись и назвать только DOM, или не упомянуть конкретные Java API.","","middle",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":20,"keywords":21,"schemaAnswer":22,"featuredSnippetReady":23},"Какие вы знаете способы записи XML? — Gymterview","Существуют два основных способа записи XML-документов в Java: прямая (потоковая) запись и запись через DOM-дерево. Выбор зависит от того, нужно ли формировать с","Существуют два основных способа записи XML-документов в Java: прямая (потоковая) запись и запись через DOM-дерево. Выбор",[7,13],"Существуют два основных способа записи XML-документов в Java: прямая (потоковая) запись и запись через DOM-дерево. Выбор зависит от того, нужно ли формировать структуру документа заранее или можно писать последовательно.",true]