Автор оригинала: 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/”