admin 管理员组

文章数量: 893632

Java 解析xml 使用SAXReader获取所有标签的key和value的代码实例

Java中使用SAXReader获取xml信息中所有标签的key和value,若是有二级或者继续嵌套,也可以递归获取的代码实例

/*** @author LiXuekai on 2020/7/26*/
public class XmlTest2 {private static final String XML_INFO = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +"<ROOT type=\"response\">\n" +"    <x>20200715</x>\n" +"    <a>0</a>\n" +"    <c>" +"        <lxk0>100</lxk0>" +"        <lxk1>200</lxk1>" +"    </c>\n" +"    <d>N</d>\n" +"    <e/>\n" +"    <f>00000</f>\n" +"    <g>1001045</g>\n" +"    <LIST/>\n" +"</ROOT>";@Testpublic void parse() throws DocumentException {SAXReader sr = new SAXReader();Document doc = sr.read(new ByteArrayInputStream(XML_INFO.getBytes(StandardCharsets.UTF_8)));Element root = doc.getRootElement();getChildNodes(root);}public static void getChildNodes(Element element) {Map<String, Object> map = Maps.newHashMap();String keyPrefix = "pre";forkv0(keyPrefix, map, element);//forkv1(element);//forkv2(element);out(map);}private static void out(Map<String, Object> map) {for (Map.Entry<String, Object> entry : map.entrySet()) {System.out.println(entry.getKey() + "  " + entry.getValue());}}private static void forkv0(String keyPrefix, Map<String, Object> map, Element element) {List elements = element.elements();for (Object o : elements) {try {Element e = (Element) o;String name = e.getName();Object data = e.getData();int size = e.elements().size();if (size > 0) {String newKey = keyPrefix + "_" + name;forkv0(newKey, map, e);} else {map.put(keyPrefix + "_" + name, data);}//System.out.println("key is " + name + " ; value is " + data + " ; size is " + size);} catch (Exception ex) {System.out.println(ex);}}}private static void forkv2(Element element) {System.out.println(element.getName());Iterator<Node> it = element.nodeIterator();while (it.hasNext()) {Node node = it.next();//只有标签节点才有子节点 所以判断这个节点是否是标签节点if (node instanceof Element) {Element element1 = (Element) node;forkv2(element1);}}}private static void forkv1(Element element) {Iterator iterator = element.elementIterator();while (iterator.hasNext()) {Element next = (Element) iterator.next();Object data = next.getData();System.out.println(next.getName() + "  " + data);}}
}

本文标签: Java 解析xml 使用SAXReader获取所有标签的key和value的代码实例