路径表达式
使用步骤
通过路径快速的查找一个或一组元素
路径表达式:
1. / : 从根节点开始查找
2. // : 从发起查找的节点位置 查找后代节点 ***
3. . : 查找当前节点
4. .. : 查找父节点
5. @ : 选择属性. *
属性使用方式:
[@属性名='值']
[@属性名>'值']
[@属性名<'值']
[@属性名!='值']
books: 路径: //book[@id='1']//name /books//book//name建议用前面的
books
book id=1
name
info
book id=2
name
info
使用步骤(本地)
package myxml;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
import java.io.FileInputStream;
import java.io.IOException;
public class Demo3 {
public static void main(String[] args) throws IOException, DocumentException {
//1. 获取输入流
FileInputStream fis = new FileInputStream("d://Demo1.xml");//解析本地文件
//2. 创建XML读取对象
SAXReader sr = new SAXReader();
//3. 读取并得到文档对象
Document doc = sr.read(fis);
//4. 通过文档对象+XPATH解析XML 查看所有name节点
/* List<Node> names = doc.selectNodes("//name"); //查多个
for(int i=0;i<names.size();i++){
System.out.println(names.get(i).getName());
System.out.println(names.get(i).getText());
}*/
Node node = doc.selectSingleNode("//book[@id='1001']//name");//查一个
System.out.println(node.getName()+":"+node.getText());
fis.close();
}
}
使用步骤(网络)
package myxml;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
public class Demo4 {
public static void main(String[] args) throws IOException, DocumentException {
String phone = "176****5382";
//1. 获取到XML资源的输入流
URL url = new URL("http://apis.juhe.cn/mobile/get?phone="
+ phone + "&dtype=xml&key=9f3923e8f87f1ea50ed4ec8c39cc9253");
URLConnection connection = url.openConnection();
InputStream inputStream = connection.getInputStream();
//2. 创建一个XML的读取对象
SAXReader saxReader = new SAXReader();
//3. 通过读取对象 读取XML数据,并返回文档对象
Document document = saxReader.read(inputStream);
//4. 获取运营商
Node node = document.selectSingleNode("//company");
System.out.println("运营商:"+node.getText());
}
}