Рубрики
Без рубрики

Как читать XML–файл на Java – (синтаксический анализатор JDOM)

Примеры JDOM для чтения или анализа локальных или удаленных XML-файлов.

JDOM – это платформа синтаксического анализа XML на основе Java с открытым исходным кодом, построенная поверх DOM и SAX, а также объектная модель документа (DOM) представление XML-документа в памяти.

JDOM упрощает навигацию по XML-документам, предоставляя более простые API-интерфейсы и стандартный интерфейс сбора данных на основе Java. Если вы не возражаете против загрузки небольшой библиотеки для анализа XML-файла, API-интерфейсы JDOM просты в использовании.

  • 1. Загрузите библиотеку JDOM
  • 2. Чтение или анализ XML-файла (JDOM)
  • 3. Читать или анализировать удаленный XML-файл (JDOM)
  • 4. Строка, содержащая XML
  • 5. Скачать Исходный Код
  • 6. Рекомендации

1. Загрузите библиотеку JDOM

JDOM не является частью встроенных API Java, и нам необходимо загрузить библиотеку JDOM.

Мавен для JDOM.

  
      org.jdom
      jdom2
      2.0.6
  

2. Чтение или анализ XML-файла (JDOM)

В этом примере показано, как использовать JDOM для анализа XML-файла.

2.1 XML-файл.



    
        mkyong
        support
        5000
        
        
    
    
        yflow
        admin
        8000
        
    

2.2 JDOM пример синтаксического анализа и распечатки всех XML-элементов и узлов.

package com.mkyong.xml.jdom;

import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;

import java.io.File;
import java.io.IOException;
import java.util.List;

public class ReadXmlJDomParser {

  private static final String FILENAME = "src/main/resources/staff.xml";

  public static void main(String[] args) {

      try {

          SAXBuilder sax = new SAXBuilder();
          // XML is a local file
          Document doc = sax.build(new File(FILENAME));

          Element rootNode = doc.getRootElement();
          List list = rootNode.getChildren("staff");

          for (Element target : list) {

              String id = target.getAttributeValue("id");
              String name = target.getChildText("name");
              String role = target.getChildText("role");
              String salary = target.getChildText("salary");
              String currency = "";
              if (salary != null && salary.length() > 1) {
                  // access attribute
                  currency = target.getChild("salary").getAttributeValue("currency");
              }
              String bio = target.getChildText("bio");

              System.out.printf("Staff id : %s%n", id);
              System.out.printf("Name : %s%n", name);
              System.out.printf("Role : %s%n", role);
              System.out.printf("Salary [Currency] : %,.2f [%s]%n", Float.parseFloat(salary), currency);
              System.out.printf("Bio : %s%n%n", bio);

          }

      } catch (IOException | JDOMException e) {
          e.printStackTrace();
      }

  }
}

Выход

Staff id : 1001
Name : mkyong
Role : support
Salary [Currency] : 5,000.00 [USD]
Bio : HTML tag testing

Staff id : 1002
Name : yflow
Role : admin
Salary [Currency] : 8,000.00 [EUR]
Bio : a & b

3. Читать или анализировать удаленный XML-файл (JDOM)

В этом примере используется анализатор JDOM для чтения или анализа удаленного XML-файла или файла на основе веб-сайта.

3.1 Посетите API Alexa https://data.alexa.com/data?cli=10&url=mkyong.com , и он вернет приведенный ниже XML-файл.


  
    
    
    
    
  

3.2 JDOM пример получения рейтинга Alexa сайта.

package com.mkyong.xml.jdom;

import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;

import java.io.IOException;
import java.net.URL;
import java.util.List;

public class ReadXmlAlexaApiJDomParser {

    private static final String REMOTE_URL
        = "https://data.alexa.com/data?cli=10&url=mkyong.com";

    public static void main(String[] args) {

        try {

            SAXBuilder sax = new SAXBuilder();
            // XML is in a web-based location
            Document doc = sax.build(new URL(REMOTE_URL));

            Element rootNode = doc.getRootElement();
            List list = rootNode.getChildren("SD");

            for (Element target : list) {

                Element popularity = target.getChild("POPULARITY");

                String url = popularity.getAttributeValue("URL");
                String rank = popularity.getAttributeValue("TEXT");

                System.out.printf("URL : %s%n", url);
                System.out.printf("Alexa Rank : %s%n", rank);

            }

        } catch (IOException | JDOMException e) {
            e.printStackTrace();
        }

    }
}

Выход

URL : mkyong.com/
Alexa Rank : 20152

4. Строка, содержащая XML

В этом примере показано, как JDOM анализирует строку , содержащую XML.

package com.mkyong.xml.jdom;

import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;

import java.io.IOException;
import java.io.StringReader;

public class ReadXmlStringJDomParser {

    public static void main(String[] args) {

        String XML = "mkyong";

        try {

            SAXBuilder sax = new SAXBuilder();
            // String that contains XML
            Document doc = sax.build(new StringReader(XML));

            Element rootNode = doc.getRootElement();
            System.out.println(rootNode.getChildText("url"));

        } catch (IOException | JDOMException e) {
            e.printStackTrace();
        }

    }
}

Выход

mkyong

Примечание Больше примеров JDOM2 – JDOM2 Учебник

5. Скачать Исходный Код

$клон git $клон git

$компакт-диск java-xml

$cd src/основной/java/com/mkyong/xml/jdom/файловая система/

6. Рекомендации

Оригинал: “https://mkyong.com/java/how-to-read-xml-file-in-java-jdom-example/”