Middle
97
questionbank
Какие способы записи XML вам известны?
Ответ от нейросети
sobes.tech AI
XML можно записывать несколькими способами, в зависимости от требуемого уровня контроля и сложности документа:
- DOM (Document Object Model): Полностью загружает XML в память в виде дерева объектов, позволяя навигировать по нему и вносить изменения.
- SAX (Simple API for XML): Парсит файл событийно, вызывая обработчики при обнаружении начальных/конечных тегов, текста и т.д. Подходит для больших файлов.
- StAX (Streaming API for XML): Комбинация SAX и DOM, позволяет парсить файл постепенно, но с большими возможностями контроля, чем SAX.
- JAXB (Java Architecture for XML Binding): Позволяет автоматически преобразовывать Java-объекты в XML и обратно, используя аннотации.
Пример создания XML с использованием DOM:
// Пример создания XML с использованием DOM
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
import org.w3c.dom.*;
public class CreateXmlDom {
public static void main(String[] args) throws Exception {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.newDocument();
// root element
Element rootElement = doc.createElement("cars");
doc.appendChild(rootElement);
// car element
Element car = doc.createElement("car");
rootElement.appendChild(car);
// model element
Element model = doc.createElement("model");
model.appendChild(doc.createTextNode("BMW"));
car.appendChild(model);
// year element
Element year = doc.createElement("year");
year.appendChild(doc.createTextNode("2022"));
car.appendChild(year);
// write the content into xml file
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new java.io.File("cars.xml"));
transformer.transform(source, result);
System.out.println("File saved!");
}
}
Пример создания XML с использованием JAXB:
// Пример создания XML с использованием JAXB
import javax.xml.bind.*;
import javax.xml.bind.annotation.*;
import java.io.*;
@XmlRootElement
public class Car {
@XmlElement
public String model;
@XmlElement
public int year;
// Getters and Setters
public String getModel() { return model; }
public void setModel(String model) { this.model = model; }
public int getYear() { return year; }
public void setYear(int year) { this.year = year; }
public static void main(String[] args)throws Exception {
Car car = new Car();
car.setModel("Audi");
car.setYear(2023);
JAXBContext jaxbContext = JAXBContext.newInstance(Car.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
// output pretty printed
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
jaxbMarshaller.marshal(car, System.out);
jaxbMarshaller.marshal(car, new File("car.xml"));
}
}