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的代码实例
版权声明:本文标题:Java 解析xml 使用SAXReader获取所有标签的key和value的代码实例 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1688191478h190167.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论