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

Java – Преобразование XML в свойства файл

Примеры Java для преобразования XML в файл свойств.

Автор оригинала: mkyong.

В этой статье показано, как преобразовать XML-файл в файл свойств.

Содержание

  • 1. Свойства – Преобразование XML-файла в файл свойств
  • 2. DOM – Преобразование XML-файла в файл свойств
  • 3. Скачать Исходный Код
  • 4. Рекомендации

P.S Протестирован с Java 11.

1. Свойства – Преобразование XML-файла в файл свойств

В приведенном ниже примере используется Свойства#LoadFromXML() для загрузки XML-файла и преобразования его в значения свойств.

1.1 XML-файл с использованием properties.dtd .





    Server config file
    8080
    donot-spam-me@nospam.com
    localhost
    8080

1.2 Мы можем использовать Свойства#LoadFromXML() для загрузки XML-файла в значения свойств.

package com.mkyong.xml.tips;

import java.io.*;
import java.util.Properties;

public class ConvertXmlToProperties {

    public static void main(String[] args) throws IOException {

        Properties props = new Properties();
        try (InputStream input =
                     new FileInputStream("src/main/resources/server.xml")) {
            // loads from XML into a properties file
            props.loadFromXML(input);
        }

        try (OutputStream output =
                     new FileOutputStream("c:\\test\\server.properties")) {

            props.store(output, "");

        }

    }

}

1.3 Выход – c:\\test\\server.properties

#
#Sun May 16 16:51:31 SGT 2021
http.port=8080
email.support=donot-spam-me@nospam.com
http.server=localhost

1.4 Для Свойств#LoadFromXML() для правильной работы XML-документ должен содержать следующее объявление типа документа:

  

Так как мы объявляем ДОКТИП и properties.dtd , XML-документ также должен соответствовать следующему формату properties.dtd .





    value1

Если XML-файл не соответствует вышеуказанному формату, определенному в properties.dtd , JDK выдаст сообщение об ошибке при загрузке XML-файла.

2. DOM – Преобразование XML-файла в файл свойств

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

2.1 XML-файл.



    
        mkyong
    
    
        yflow
    

2.2 Анализатор DOM для чтения XML и преобразования его в Свойства объект.

package com.mkyong.xml.tips;

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;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.*;
import java.util.Properties;

public class ConvertXmlToPropertiesDom {

    public static void main(String[] args)
            throws IOException, ParserConfigurationException, SAXException {

        Document doc;
        Properties prop = new Properties();

        try (FileInputStream input =
                     new FileInputStream("src/main/resources/staff.xml")) {
            // convert XML file to Document
            doc = parse(input);
        }

        NodeList list = doc.getElementsByTagName("staff");

        for (int temp = 0; temp < list.getLength(); temp++) {

            Node node = list.item(temp);

            if (node.getNodeType() == Node.ELEMENT_NODE) {

                Element element = (Element) node;

                // get staff's id
                String id = element.getAttribute("id");

                // get text
                String name = element.getElementsByTagName("name")
                        .item(0).getTextContent();

                // write value to properties
                // prop does not guarantee on the order
                prop.setProperty("company.staff" + temp + ".id", id);
                prop.setProperty("company.staff" + temp + ".name", name);

            }

        }

        // write to console for testing
        prop.store(System.out, "");

        // write to a properties file
        /*try (FileOutputStream output =
                     new FileOutputStream("c:\\test\\staff.properties")) {
            prop.store(output, "");
        }*/

    }

    // get document
    private static Document parse(InputStream input)
            throws ParserConfigurationException, IOException, SAXException {

        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document doc = db.parse(input);
        return doc;

    }

}

Выход

#
#Sun May 16 17:43:20 SGT 2021
company.staff0.name=mkyong
company.staff0.id=1001
company.staff1.name=yflow
company.staff1.id=1002

Как насчет САКСОФОНА, Стакса, ДОМА и ДЖАКСБА? Описанная выше идея парсера DOM работает для всех других парсеров XML, таких как SAX, STAX, DOM или JAXB. Мы используем анализатор XML для считывания XML-значений и сохранения их в Свойствах объекта.

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

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

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

$cd src/основной/java/com/mkyong/xml/советы/

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

  • Свойства JavaDoc
  • Примеры файлов свойств Java
  • Java – Преобразование файла свойств в XML
  • Как читать XML–файл на Java – (DOM-анализатор)
  • Как читать XML-файл на Java (синтаксический анализатор SAX)
  • Как читать XML-файл на Java (анализатор Stax)
  • Как читать XML–файл на Java – (синтаксический анализатор JDOM)
  • Пример JAXB привет, мир

Оригинал: “https://mkyong.com/java/how-to-load-properties-from-xml-file/”