XML (eXtensible Markup Language или Расширяемый язык разметки) — это язык разметки, определяющий набор правил для кодирования документов в формате, который удобен как для чтения человеком, так и для машинной обработки. Основные цели XML заключаются в простоте, общности и удобстве использования в Интернете. XML применяется в основном для обмена структурированными данными между различными информационными системами, особенно через Интернет, а также используется для кодирования документов и сериализации данных.
Данные в XML организованы в виде древовидной структуры и состоят из нескольких ключевых компонентов:
<?xml version="1.0" encoding="UTF-8"?>
<company>
<employee id="1">
<name>John Doe</name>
<email>john.doe@example.com</email>
<department>Human Resources</department>
</employee>
<employee id="2">
<name>Jane Smith</name>
<email>jane.smith@example.com</email>
<department>Finance</department>
</employee>
</company>
Java предоставляет несколько API для работы с данными XML, включая DOM, SAX и StAX. Ниже приведены краткие описания и примеры использования этих API:
Пример использования:
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class XmlExample {
public static void main(String[] args) throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new File("company.xml"));
NodeList employees = document.getElementsByTagName("employee");
for (int i = 0; i < employees.getLength(); i++) {
Element employee = (Element) employees.item(i);
String name = employee.getElementsByTagName("name").item(0).getTextContent();
System.out.println("Имя сотрудника: " + name);
}
}
}
итать данные, не сохраняя их.
Пример использования:
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.*;
public class SaxExample extends DefaultHandler {
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
if (qName.equalsIgnoreCase("name")) {
System.out.println("Найдено имя сотрудника");
}
}
public void characters(char ch[], int start, int length) throws SAXException {
System.out.println("Имя: " + new String(ch, start, length));
}
}
Пример использования:
import javax.xml.stream.*;
public class StaxExample {
public static void main(String[] args) throws XMLStreamException {
XMLInputFactory factory = XMLInputFactory.newInstance();
XMLStreamReader reader = factory.createXMLStreamReader(new FileInputStream("company.xml"));
while(reader.hasNext()) {
if (reader.next() == XMLStreamConstants.START_ELEMENT) {
if (reader.getLocalName().equals("name")) {
System.out.println("Имя сотрудника: " + reader.getElementText());
}
}
}
}
}
XML остаётся мощным инструментом для обмена данными и конфигурации благодаря своей гибкости, широкой поддержке в различных программных средах и распространённому использованию в устаревших системах.