Сегодня мы научимся читать XML-файл на Java. Мы также узнаем, как анализировать XML-файл в Java для объекта с использованием DOM-анализатора.
DOM XML Parser проще всего понять. Он загружает объект XML в память как Document, после чего вы можете легко перемещаться по различным элементам и узлам в объекте. Обход элементов и узлов не обязательно должен быть в порядке.
DOM Parser хорош для небольших XML-документов, но поскольку он загружает полный XML-файл в память, он не подходит для больших XML-файлов. Для больших файлов XML, вы должны использовать SAX Parser ,
В этом уроке мы будем читать XML-файл и анализировать его, чтобы создать из него объект.
Вот XML-файл, который будет прочитан в этой программе.
employee.xml
<? xml version = "1.0"?> <Сотрудники> <Сотрудник> <name> Pankaj </ name> <age> 29 </ age> <role> Java Developer </ role> <пол> Мужской </ пол> < / Employee> <Employee> <name> Lisa </ name> <age> 35 </ age> <role> CSS Developer </ role> <пол> Female </ sex> </ Employee> </ Employees>
Итак, этот XML является списком сотрудников, для чтения этого XML-файла я создам объект bean-объекта Employee, а затем мы проанализируем XML, чтобы получить список из сотрудников.
Вот объект bean-объекта Employee.
пакет com.journaldev.xml; открытый класс Employee {private String name; частный пол строки; частный возраст; частная строковая роль; public String getName () {возвращаемое имя; } public void setName (String name) {this.name = name; } public String getGender () {возвращать пол; } public void setGender (String gen) {this.gender = пол; } public int getAge () {вернуть возраст; } public void setAge (int age) {this.age = age; } public String getRole () {возвращаемая роль; } public void setRole (String role) {this.role = role; } @Override public String toString () {return "Employee :: Name =" + this.name + "Age =" + this.age + "Gender =" + this.gender + "Role =" + this.role; }}
Обратите внимание, что я переопределил метод toString () для вывода полезной информации о сотруднике.
Прочтите этот пост, чтобы знать, что вы всегда должны использовать @ Переопределить аннотацию переопределить методы.
Если вы новичок в аннотациях, прочитайте Java-аннотации учебник ,
Java DOM Parser
Вот Java-программа, которая использует DOM Parser для чтения и анализа XML-файла, чтобы получить список объектов Employee.
пакет com.journaldev.xml; импорт java.io.File; импорт java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; открытый класс XMLReaderDOM {открытый статический void main (String [] args) {String filePath = "employee.xml"; Файл xmlFile = новый файл (filePath); DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance (); DocumentBuilder dBuilder; try {dBuilder = dbFactory.newDocumentBuilder (); Документ doc = dBuilder.parse (xmlFile); doc.getDocumentElement () нормализуют (). System.out.println ("Корневой элемент:" + doc.getDocumentElement (). GetNodeName ()); NodeList nodeList = doc.getElementsByTagName ("Сотрудник"); // теперь XML загружается как документ в память, давайте преобразуем его в список объектов List <Employee> empList = new ArrayList <Employee> (); for (int i = 0; i <nodeList.getLength (); i ++) {empList.add (getEmployee (nodeList.item (i))); } // позволяет напечатать информацию списка сотрудников для (Employee emp: empList) {System.out.println (emp.toString ()); }} catch (SAXException | ParserConfigurationException | IOException e1) {e1.printStackTrace (); }} private static Employee getEmployee (Node node) {// XMLReaderDOM domReader = new XMLReaderDOM (); Employee emp = новый сотрудник (); if (node.getNodeType () == Node.ELEMENT_NODE) {Element element = (Element) node; emp.setName (getTagValue ("имя", элемент)); emp.setAge (Integer.parseInt (getTagValue ("age", element))); emp.setGender (getTagValue («пол», элемент)); emp.setRole (getTagValue ("role", element)); } return emp; } приватная статическая строка getTagValue (тег String, элемент Element) {NodeList nodeList = element.getElementsByTagName (tag) .item (0) .getChildNodes (); Узел узел = (Node) nodeList.item (0); return node.getNodeValue (); }}
Вывод вышеуказанной программы:
Корневой элемент: Сотрудники Employee :: Name = Pankaj Возраст = 29 Пол = Мужской Роль = Java Разработчик Сотрудник :: Имя = Lisa Возраст = 35 Пол = Женский Роль = CSS Разработчик
В реальной жизни неплохо проверить файл XML перед его разбором на объекты, узнать, как проверить XML на соответствие XSD в Яве. Это все о том, как прочитать XML-файл или разобрать XML-файл в Java.
Ссылка: Официальный W3.org Doc
Похожие
Java String compareTo ()Java String Метод CompareTo () используется для лексикографического сравнения двух строк. Этот метод объявлен в сравнимый интерфейс. Так как String реализует Сопоставимый интерфейс , он обеспечивает реализацию метода compareTo (). Java String сравнить #deletefacebook или как толерантно расстаться с сетями
Надо признать - социальные сети занимают в нашей жизни так много времени, мы уже не можем наверняка сказать, это полезный инструмент, или вредная привычка. Поэтому если вы не хотите проводить свое свободное время в социальных сетях, или же вам не нравится, когда слишком много личной информации находится в интернете, то можете удалить учетные записи на некоторых площадках. Однако желание удалить свой аккаунт - это одно, а сделать это - совсем другое. Социальные сети зарабатывают деньги на Совет: как избавиться от плитки «Инвертировать цвета» с быстрой настройкой на вашем Moto X
... в, но некоторые из вас заметили новую опцию «Инвертировать цвета» в выпадающем списке быстрых настроек Moto X (2-го поколения) в течение последнего дня мы хотели затронуть тему. Да, по какой-то причине многие из вас начали видеть кнопку вчера и задаются вопросом, почему она есть и как вы можете от нее избавиться. Хотя мы не знаем, почему он отображается случайным образом для пользователей, которые никогда не касались этого СЕУЛ (Рейтер) - главный финансовый регулятор Южной Кореи заявил Samsung BioLogics Co Ltd ( 207940.KS...
СЕУЛ (Рейтер) - главный финансовый регулятор Южной Кореи заявил Samsung BioLogics Co Ltd ( 207940.KS ) преднамеренно нарушил правила бухгалтерского учета в преддверии листинга в 2016 году, что привело к приостановке торговли акциями биотехнологической компании и пересмотру ее статуса листинга. Как перевести деньги за границу с лучшим обменным курсом и без комиссий
Если есть что-то, что я ненавижу, так это платить банкам комиссионные и помогать банкам зарабатывать миллиарды долларов с минимальной отдачей. Я всегда ищу способы снижения сборов, особенно когда речь идет о переводе денег за границу. Как перевести деньги за границу по лучшему курсу Банки полностью Как подключить ваш Android к интернету через ПК через USB
Люди часто «привязывают» свои компьютеры к своим смартфонам, отправляя сетевой трафик своего компьютера по сотовому каналу передачи данных устройства. «Обратный модем» - это наоборот - привязывает ваш смартфон или планшет Android к Как вставить галочку или крестик в Microsoft Word и Excel
Есть несколько способов вставить символ галочки (также известный как галочка или галочка) в Microsoft Word, методы, которые мы описываем ниже, относятся к Microsoft Office 365, Microsoft Word 2016, Microsoft Word 2013, Microsoft Word 2011, Microsoft Word 2010 , Microsoft Word 2007, Microsoft Word 2008 и Microsoft Word 2004 Чтобы скопировать и вставить галочку или крест, выделите один из галочек или крестиков ниже, а затем скопируйте и вставьте его в пункт назначения. Выделите Как проверить, защищен ли ваш компьютер или телефон от обвала и призрака?
... вы установили исправления из Центра обновления Windows, ваш компьютер может быть не полностью защищен от Обвал и Призрак Недостатки процессора. Вот как проверить, полностью ли вы защищены, и что делать, если нет. СВЯЗАННЫЕ С: Как недостатки MobileGo - самый простой способ поставить музыку на HTC 10, HTC U Ultra, HTC U play
Зачем размещать музыку на HTC 10, HTC HTC U Ultra U & play? Устройства Android сегодня имеют большую долю рынка мобильных телефонов, чем когда-либо прежде. Хотя Apple iPhone по-прежнему остается крупнейшим в мире доминирующим телефоном, нет никаких сомнений в том, что телефоны Android, например, сделанные с Samsung и HTC, работают поблизости. Хотя сегодня телефоны Android подходят к iPhone на всех уровнях, фактом является то, что многие все еще пытаются получить их Экспорт анимации After Effects в HTML5
Анимация в сети здесь, чтобы остаться. Это во всем, от тонких движений, которые помогают нам Дизайн интерфейса к жизни, к полностью анимированным впечатлениям от Canvas и экспериментам WebGL, которые бросают вызов тому, что мы когда-то считали возможным в браузере. В то время как творческие способности разработчиков и возможности браузеров растут, анимация в Интернете долгое время плохо относилась к видео Не создавайте аккаунт YouTube Music Premium на своем iPhone
Подписка на новую услугу подписки на потоковую передачу музыки YouTube составляет 9,99 долл. США в месяц ... если вы не пользуетесь iTunes, где стоимость подписки увеличивается до 12,99 долл. США. Под вопросом: процент от 30% взят Apple, что не компенсируется Google. Пояснения.