【工程截图】
【person.xml】
张三 张三2 18 清华 李四 李四2 28 北大 啦啦啦 AAA哈哈哈 aa111 aa222 BBB哈哈哈
【共用的打印节点路径和内容的方法】方便查看
public static void printNodes(String xpath,Document doc){ Listlist=doc.selectNodes(xpath); for(Node node:list){ System.out.println("【路径】"+node.getPath()+" 【内容】"+node.getText()); } }
【1.绝对路径 / 】
public static void main(String[] args) throws DocumentException { Document doc=new SAXReader().read(new File("./src/person.xml")); String xpath=""; //后面的代码分别代替下面的"===="内的内容 ================================================================= /** * 1. "/" 绝对路径 表示从xml的根位置开始 */ xpath="/students"; //打印结果1 xpath="/students/student/name"; //打印结果2 ================================================================== printNodes(xpath,doc); //调用上面打印路径和内容的方法 (分别注释)}
【打印结果1】
【打印结果2】
【2. 相对路径 // 】
/** * 2. "//" 相对路径 表是不分任何层次结构的选择元素 */ xpath="//student/age"; //打印结果1 xpath="//name"; //打印结果2
【打印结果1】
【打印结果2】
【3.通配符 *】
/** * 3. "*" 通配符 表示匹配所有元素 */ xpath="/students/*"; //打印结果1 xpath="/students/student/*"; //打印结果2
【打印结果1】
【打印结果2】
【4.条件 [ ] 】
/** * 4. "[]" 条件 表好似选择什么条件下的元素 */ //带有id属性的标签 xpath="//student[@id]"; //打印结果1 //第3个student标签 xpath="//student[3]"; //打印结果2 //选择最后一个student标签 xpath="//student[last()]"; //打印结果3
【打印结果1】
【打印结果2】
【打印结果3】
【5. 属性 "@"】
/** * 5. "@" 属性 表好似选择属性节点 */ xpath="//@id"; //打印结果1 xpath="//student[not(@id)]"; //打印结果2 xpath="//student[@id='BBB' and @sex='女']"; //打印结果3
【打印结果1】
【打印结果2】
【打印结果3】
【6. 文本 text()】
/** * 6. text() 表示选择文本内容 */ xpath="//name/text()"; //打印结果1 //选择name为李四的name标签 xpath = "//student/name[text()='李四']";//打印结果2
【打印结果1】
【打印结果2】