一、xPath的做用:快速獲取所須要的節點對象。node
二、在Dom4j中如何使用xPath技術?學習
(1)導入xPath支持的jar包。 jaxen-1.1-beta-6.jarspa
(2)使用方法code
List<Node> selectNodes("xPath表達式");//查詢多個節點對象orm
Node selectSingleNode("xPath表達式");//查詢一個節點對象xml
三、語法對象
/ 絕對路徑 表示從xml的根位置開始或子元素(一個層次結構)blog
// 相對路徑 表示不分任何層次結構的選擇元素。utf-8
* 通配符 表示匹配全部元素it
[] 條件 表示選擇什麼條件下的元素
@ 屬性 表示選擇屬性節點
and 關係 表示條件的與關係(等價於&&)
text() 文本 表示選擇文本內容
3.1
/** * 第一個xpath程序 * @author APPle * */ public class Demo1 { public static void main(String[] args) throws Exception{ /** * 需求: 刪除id值爲2的學生標籤 */ Document doc = new SAXReader().read(new File("e:/student.xml")); //1.查詢id爲2的學生標籤 //使用xpath技術 Element stuElem = (Element)doc.selectSingleNode("//Student[@id='2']"); //2.刪除標籤 stuElem.detach(); //3.寫出xml文件 FileOutputStream out = new FileOutputStream("e:/student.xml"); OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("utf-8"); XMLWriter writer = new XMLWriter(out,format); writer.write(doc); writer.close(); } }
3.2
/** * 學習xPath表達式語法 * @author APPle * */ public class Demo2 { public static void main(String[] args) throws Exception { Document doc = new SAXReader().read(new File("./src/contact.xml")); String xpath = ""; /** * 1. / 絕對路徑 表示從xml的根位置開始或子元素(一個層次結構) */ xpath = "/contactList"; xpath = "/contactList/contact"; /** * 2. // 相對路徑 表示不分任何層次結構的選擇元素。 */ xpath = "//contact/name"; xpath = "//name"; /** * 3. * 通配符 表示匹配全部元素 */ xpath = "/contactList/*"; //根標籤contactList下的全部子標籤 xpath = "/contactList//*";//根標籤contactList下的全部標籤(不分層次結構) /** * 4. [] 條件 表示選擇什麼條件下的元素 */ //帶有id屬性的contact標籤 xpath = "//contact[@id]"; //第二個的contact標籤 xpath = "//contact[2]"; //選擇最後一個contact標籤 xpath = "//contact[last()]"; /** * 5. @ 屬性 表示選擇屬性節點 */ xpath = "//@id"; //選擇id屬性節點對象,返回的是Attribute對象 xpath = "//contact[not(@id)]";//選擇不包含id屬性的contact標籤節點 xpath = "//contact[@id='002']";//選擇id屬性值爲002的contact標籤 xpath = "//contact[@id='001' and @name='eric']";//選擇id屬性值爲001,且name屬性爲eric的contact標籤 /** *6. text() 表示選擇文本內容 */ //選擇name標籤下的文本內容,返回Text對象 xpath = "//name/text()"; xpath = "//contact/name[text()='張三']";//選擇姓名爲張三的name標籤 List<Node> list = doc.selectNodes(xpath); for (Node node : list) { System.out.println(node); } } }