包括三个文件:studentInfo.xml(待解析的xml文件), Dom4jReadExmple.java(解析的主要类), TestDom4jReadExmple.java(测试解析的结果) .
TestDom4jReadExmple.java package dom4jExample.read; /** * 测试Dom4jReadExmple解析的情况 * @author cuiweibing * @since 2007.8.10 */ public class TestDom4jReadExmple { public static void main(String[] args) { try{ Dom4jReadExmple drb=new Dom4jReadExmple(); //利用XPath操作XML文件,打印想要的属性值 drb.printSelectedNodeValue("studentInfo.xml"); }catch(Exception ex){ ex.printStackTrace(); } } } |
<script type="text/javascript">
</script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-1832179689702023&dt=1188027915765&lmt=1186737022&format=336x280_as&output=html&correlator=1188027915656&channel=7111701428&url=http%3A%2F%2Fwww.java3z.com%2Fcwbwebhome%2Farticle%2Farticle5%2F5827.html%3Fid%3D1541&color_bg=FFFFFF&color_text=000000&color_link=0000FF&color_url=3D81EE&color_border=FFFFFF&ad_type=text_image&ref=http%3A%2F%2Fwww.baidu.com%2Fs%3Flm%3D0%26si%3D%26rn%3D10%26tn%3Dmaxthon2%26ie%3Dgb2312%26ct%3D0%26wd%3Dorg%252Edom4j%252EDocument%26pn%3D20%26cl%3D3&cc=99&ga_vid=1127308352.1188027916&ga_sid=1188027916&ga_hid=1042658225&flash=9&u_h=768&u_w=1024&u_ah=738&u_aw=1024&u_cd=32&u_tz=480&u_java=true" frameborder="0" width="336" scrolling="no" height="280" allowtransparency="allowtransparency">
| studentInfo.xml <?xml version="1.0" encoding="gb2312"?> <students> <student age="25"><!--如果没有age属性,默认的为20--> <name>崔卫兵</name> <college>PC学院</college> <telephone>62354666</telephone> <notes>男,1982年生,硕士,现就读于北京邮电大学</notes> </student> <student> <name>cwb</name> <college leader="leader1">PC学院</college><!--如果没有leader属性,默认的为leader--> <telephone>62358888</telephone> <notes>男,1987年生,硕士,现就读于中国农业大学</notes> </student> <student age="45"> <name>xxxxx</name> <college leader="">xxx学院</college> <telephone>66666666</telephone> <notes>注视中,注释中</notes> </student> <student age=""> <name>yyyyyy</name> <college leader="学院领导">yyyy学院</college> <telephone>88888888</telephone> <notes>注视中111,注释中222</notes> </student> </students> Dom4jReadExmple.java package dom4jExample.read; import java.io.File; import java.util.HashMap; import java.util.Iterator; import java.util.List; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; /** * 利用dom4j与XPath进行XML编程 * @author cuiweibing * @since 2007.8.10 */ public class Dom4jReadExmple {
/** * 利用XPath操作XML文件,打印指定节点或者属性的值 * @param filename String 待操作的XML文件(相对路径或者绝对路径) */ public void printSelectedNodeValue(String filename){ try { SAXReader saxReader = new SAXReader(); Document document = saxReader.read(new File(filename)); //打印所有student节点的属性age值,如果有的话 List list = document.selectNodes("/students/student/@age"); Iterator iter = list.iterator(); while (iter.hasNext()) { Attribute attribute = (Attribute) iter.next(); System.out.println("/students/student/@age:"+attribute.getValue()); } //打印所有college节点值,如果有的话 list = document.selectNodes("/students/student"); iter = list.iterator(); while (iter.hasNext()) { Element bookElement = (Element) iter.next(); Iterator iterator = bookElement.elementIterator("college"); while (iterator.hasNext()) { Element titleElement = (Element) iterator.next(); System.out.println("/students/student/college:"+titleElement.getText()); } } //测试节点的一些方法 list = document.selectNodes("//telephone"); iter = list.iterator(); while (iter.hasNext()) { Element titleElement = (Element) iter.next(); System.out.print("//telephone:getName:"+titleElement.getName()); System.out.print(" ##getNodeType:"+titleElement.getNodeType()); System.out.print(" ##getTextTrim:"+titleElement.getTextTrim()); System.out.print(" ##getNamespaceURI:"+titleElement.getNamespaceURI()); System.out.print(" ##getNodeTypeName:"+titleElement.getNodeTypeName()); System.out.print(" ##getQualifiedName:"+titleElement.getQualifiedName()); System.out.print(" ##getUniquePath:"+titleElement.getUniquePath()); System.out.println(" ##getPath:"+titleElement.getPath()); } //打印所有name节点值,如果有的话,与上面college的取法不一样 list = document.selectNodes("/students/student/name"); iter = list.iterator(); while (iter.hasNext()) { Element titleElement = (Element) iter.next(); System.out.println("/students/student/name:"+titleElement.getText()); } } catch (Exception ex) { ex.printStackTrace(); } } } 运行结果 /students/student/@age:25 /students/student/@age:45 /students/student/@age: /students/student/college:PC学院 /students/student/college:PC学院 /students/student/college:xxx学院 /students/student/college:yyyy学院 //telephone:getName:telephone ##getNodeType:1 ##getTextTrim:62354666 ##getNamespaceURI: ##getNodeTypeName:Element ##getQualifiedName:telephone ##getUniquePath:/students/student[1]/telephone ##getPath:/students/student/telephone //telephone:getName:telephone ##getNodeType:1 ##getTextTrim:62358888 ##getNamespaceURI: ##getNodeTypeName:Element ##getQualifiedName:telephone ##getUniquePath:/students/student[2]/telephone ##getPath:/students/student/telephone //telephone:getName:telephone ##getNodeType:1 ##getTextTrim:66666666 ##getNamespaceURI: ##getNodeTypeName:Element ##getQualifiedName:telephone ##getUniquePath:/students/student[3]/telephone ##getPath:/students/student/telephone //telephone:getName:telephone ##getNodeType:1 ##getTextTrim:88888888 ##getNamespaceURI: ##getNodeTypeName:Element ##getQualifiedName:telephone ##getUniquePath:/students/student[4]/telephone ##getPath:/students/student/telephone /students/student/name:崔卫兵 /students/student/name:cwb /students/student/name:xxxxx /students/student/name:yyyyyy
<script type="text/javascript">
</script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-1832179689702023&dt=1188027915828&lmt=1186737022&prev_fmts=336x280_as&format=468x60_as&output=html&correlator=1188027915656&url=http%3A%2F%2Fwww.java3z.com%2Fcwbwebhome%2Farticle%2Farticle5%2F5827.html%3Fid%3D1541&color_bg=FFFFFF&color_text=000000&color_link=3366FF&color_url=008000&color_border=3366FF&ad_type=text_image&ref=http%3A%2F%2Fwww.baidu.com%2Fs%3Flm%3D0%26si%3D%26rn%3D10%26tn%3Dmaxthon2%26ie%3Dgb2312%26ct%3D0%26wd%3Dorg%252Edom4j%252EDocument%26pn%3D20%26cl%3D3&cc=99&ga_vid=1127308352.1188027916&ga_sid=1188027916&ga_hid=1042658225&flash=9&u_h=768&u_w=1024&u_ah=738&u_aw=1024&u_cd=32&u_tz=480&u_java=true" frameborder="0" width="468" scrolling="no" height="60" allowtransparency="allowtransparency">
| |