要将Java的java.util.Properties
对象写入XML,可以使用以下步骤:
Properties
对象转换为XML格式的字符串。可以使用javax.xml.transform.Transformer
和javax.xml.transform.dom.DOMSource
类来实现。import java.io.StringWriter;
import java.util.Properties;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
public String propertiesToXML(Properties properties) {
try {
javax.xml.parsers.DocumentBuilderFactory dbf = javax.xml.parsers.DocumentBuilderFactory.newInstance();
javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
org.w3c.dom.Document doc = db.newDocument();
org.w3c.dom.Element root = doc.createElement("properties");
doc.appendChild(root);
for (String key : properties.stringPropertyNames()) {
org.w3c.dom.Element element = doc.createElement("property");
element.setAttribute("key", key);
element.setTextContent(properties.getProperty(key));
root.appendChild(element);
}
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
StringWriter stringWriter = new StringWriter();
transformer.transform(new DOMSource(doc), new StreamResult(stringWriter));
return stringWriter.getBuffer().toString();
} catch (Exception e) {
throw new RuntimeException("Error converting properties to XML", e);
}
}
propertiesToXML
方法将Properties
对象转换为XML字符串,并将其写入文件或其他输出流。Properties properties = new Properties();
properties.setProperty("key1", "value1");
properties.setProperty("key2", "value2");
String xmlString = propertiesToXML(properties);
System.out.println(xmlString);
这将输出以下XML格式的字符串:
<?xml version="1.0" encoding="UTF-8"?><properties>
<property key="key1">value1</property>
<property key="key2">value2</property>
</properties>
注意:这个方法并没有使用排序键,因为java.util.Properties
类本身不支持排序键。如果需要按照排序键对属性进行排序,可以在将属性添加到Properties
对象之前对它们进行排序。
领取专属 10元无门槛券
手把手带您无忧上云