Sobes.tech
Middle
97
questionbank

Какие способы записи XML вам известны?

Ответ от нейросети

sobes.tech AI

XML можно записывать несколькими способами, в зависимости от требуемого уровня контроля и сложности документа:

  1. DOM (Document Object Model): Полностью загружает XML в память в виде дерева объектов, позволяя навигировать по нему и вносить изменения.
  2. SAX (Simple API for XML): Парсит файл событийно, вызывая обработчики при обнаружении начальных/конечных тегов, текста и т.д. Подходит для больших файлов.
  3. StAX (Streaming API for XML): Комбинация SAX и DOM, позволяет парсить файл постепенно, но с большими возможностями контроля, чем SAX.
  4. 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"));
    }
}