Как распарсить xml инструментами java?

Пользователь

от richie_mayert , в категории: Другие , месяц назад

Как распарсить xml инструментами java?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от krista , месяц назад

@richie_mayert 

В Java существует несколько инструментов для парсинга XML, таких как:

  1. DOM (Document Object Model): DOM представляет XML-документ как дерево узлов, которое можно проходить и обрабатывать. Для использования DOM в Java, можно воспользоваться классом DocumentBuilderFactory и DocumentBuilder. Пример: import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import org.w3c.dom.*; // Загрузка XML-документа DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse("input.xml"); // Получение элементов Element root = document.getDocumentElement(); NodeList nodeList = root.getElementsByTagName("tag"); // Обработка элементов for (int i = 0; i < nodeList.getLength(); i++) { Node node = nodeList.item(i); if (node.getNodeType() == Node.ELEMENT_NODE) { Element element = (Element) node; String attributeValue = element.getAttribute("attribute"); String textValue = element.getTextContent(); // Дальнейшая обработка } }
  2. SAX (Simple API for XML): SAX обрабатывает XML-документ поэлементно и вызывает обработчики событий при обнаружении каждого элемента. Для использования SAX в Java, необходимо создать класс обработчика событий, расширяющий DefaultHandler и переопределить нужные методы. Пример: import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; // Создание класса-обработчика событий class XMLHandler extends DefaultHandler { @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if (qName.equals("tag")) { String attributeValue = attributes.getValue("attribute"); // Дальнейшая обработка } } @Override public void characters(char[] ch, int start, int length) throws SAXException { String textValue = new String(ch, start, length); // Дальнейшая обработка } } // Создание парсера и парсинг XML-документа SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser saxParser = factory.newSAXParser(); XMLHandler handler = new XMLHandler(); saxParser.parse("input.xml", handler); Обработчик событий XMLHandler будет вызываться при обнаружении каждого элемента или текстового содержимого.
  3. JAXB (Java Architecture for XML Binding): JAXB позволяет преобразовывать XML-документы в Java-объекты и наоборот. Для использования JAXB в Java, необходимо создать классы-модели, соответствующие схеме XML-документа, и использовать аннотации JAXB для указания соответствия между классами и элементами XML. Пример: import javax.xml.bind.*; import java.io.File; // Загрузка XML-документа и преобразование в Java-объекты JAXBContext jaxbContext = JAXBContext.newInstance(YourClass.class); Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); YourClass yourObject = (YourClass) unmarshaller.unmarshal(new File("input.xml")); // Преобразование Java-объектов в XML-документ Marshaller marshaller = jaxbContext.createMarshaller(); marshaller.marshal(yourObject, new File("output.xml")); В этом примере YourClass - это класс, соответствующий схеме XML-документа и был предварительно создан с использованием аннотаций JAXB.