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