Java XML 转 Map - 使用 DOM 解析库
要将 XML 转换为 Map,可以使用 Java 的 XML 解析库,例如 DOM 或 SAX。以下是使用 DOM 解析 XML 并将其转换为 Map 的示例代码:
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class XmlToMapConverter {
public static void main(String[] args) {
try {
File xmlFile = new File('path/to/xml/file.xml');
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(xmlFile);
Element rootElement = doc.getDocumentElement();
Map<String, Object> map = new HashMap<>();
map.put(rootElement.getNodeName(), processElement(rootElement));
System.out.println(map);
} catch (Exception e) {
e.printStackTrace();
}
}
private static Object processElement(Element element) {
Map<String, Object> map = new HashMap<>();
NodeList nodeList = element.getChildNodes();
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
if (node instanceof Element) {
if (node.hasChildNodes()) {
Object value = processElement((Element) node);
if (map.containsKey(node.getNodeName())) {
Object existingValue = map.get(node.getNodeName());
if (existingValue instanceof Object[]) {
Object[] newArray = new Object[] { existingValue, value };
map.put(node.getNodeName(), newArray);
} else {
map.put(node.getNodeName(), new Object[] { existingValue, value });
}
} else {
map.put(node.getNodeName(), value);
}
} else {
map.put(node.getNodeName(), node.getTextContent());
}
}
}
return map;
}
}
请注意,上述代码假设 XML 文件的结构是嵌套的,并且没有重复的元素名称。如果 XML 文件具有不同的结构或重复的元素名称,您可能需要根据实际情况进行相应的修改。
原文地址: https://www.cveoy.top/t/topic/pcws 著作权归作者所有。请勿转载和采集!