Java递归遍历XML所有元素
做一个递归遍历XML的例子,为更为复杂的解析工作做基础。
目标:遍历所有的元素节点,并且取出来其中的值,结果打印到控制台。
源代码如下:
本程序依赖DOM4j包。
import org.dom4j.Document; import java.util.*; /** // private static Map<String, String> xmlmap = new HashMap<String, String>(); //要测试的xml对象 public static void main(String args[]) throws DocumentException { System.out.println("-----------原xml内容------------"); } /** /** public String getListString(List<Leaf> elemList) { /** public Leaf(String xpath, String value) { public String getXpath() { public void setXpath(String xpath) { public String getValue() { public void setValue(String value) { |
运行结果:
-----------原xml内容------------
<?xml version="1.0" encoding="GBK"?> <doc> <person> <name>某人</name> <adds> <add ID="10002"> <BS>10002</BS> <note>西安市太白路</note> </add> <add ID=""> <BS>10002</BS> <note>空ID节点啊</note> </add> <add> <BS>10002</BS> <note>空ID节点啊</note> </add> <add ID="10001"> <BS xmlns="10001"/> <note>西安市太白路2</note> </add> </adds> </person> <other> <name ID="HEHE">ASDF</name> </other> </doc> |
-----------解析结果------------
/doc/person/name = 某人 /doc/person/adds/add/BS = 10002 /doc/person/adds/add/note = 西安市太白路 /doc/person/adds/add/BS = 10002 /doc/person/adds/add/note = 空ID节点啊 /doc/person/adds/add/BS = 10002 /doc/person/adds/add/note = 空ID节点啊 /doc/person/adds/add/*[name()='BS'] = /doc/person/adds/add/note = 西安市太白路2 /doc/other/name = ASDF Process finished with exit code 0 |
可以发现,有很多xpath相同的值域。