您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
15_xml_解析_Jsoup_根据Xpath查询
发布时间:2022-07-30 23:05:54编辑:雪饮阅读()
为了在接下来Xpath语言的使用示例中有至少合理合适的xml结构,则待解析的xml:
test5.xml:
<?xml version="1.0" encoding="utf-8" ?>
<users>
<user number="kasumi_0001" id="xy_kasumi">
<name number="kasumi_0001">kasumi</name>
<age>18</age>
<gender>female</gender>
</user>
<user number="kasumi_0002">
<name>xy</name>
<age>18</age>
<gender>male</gender>
</user>
<user>
<name number="kasumi_0003">xy_kasumi</name>
<age>18</age>
<gender>male</gender>
</user>
</users>
那么Xpath的具体使用实例:
quickIntroduction.java:
package day12;
import cn.wanghaomiao.xpath.model.JXDocument;
import cn.wanghaomiao.xpath.model.JXNode;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.File;
import java.net.URL;
import java.util.List;
public class quickIntroduction {
public static void main(String[] args) throws Exception{
getElement();
}
public static void getElement() throws Exception{
/*
导入JsoupXpath-0.3.2.jar后(这次遇到点小意外,把JsoupXpath-0.3.2.jar复制到当前项目中我自定义的存放jar包的地方,然后在intellij idea中这个jar上右键竟然不出现之前那个add as libray了
所以这次我的方法是在File=>Project Structure...=>Modules=>当前项目=》最右边的“+”号=》JARS or directories...=》选择到JsoupXpath-0.3.2.jar这个之后才导入成功)
就可以使用xpath了,说到xpath其实并非只有php解析xml时候有用到,人家xpath是一个公共的语言,像是css选择器一样
*/
String path=quickIntroduction.class.getClassLoader().getResource("day12/test5.xml").getPath();
Document document= Jsoup.parse(new File(path),"utf-8");
JXDocument jxDocument=new JXDocument(document);
System.out.println("--------用xpath语法获取所有标签名为user的标签列表,不管该标签的结构位置等----------");
List<JXNode> jxNodes=jxDocument.selN("//user");
for(JXNode jxNode:jxNodes){
System.out.println(jxNode);
}
System.out.println("--------用xpath语法获取所有标签name标签,且该name标签的直属父级为user标签----------");
List<JXNode> jxNodes_user_name=jxDocument.selN("//user/name");
for(JXNode jxNode:jxNodes_user_name){
System.out.println(jxNode);
}
System.out.println("--------用xpath语法获取所有标签name标签,且该name标签的直属父级为user标签,并且该name标签拥有number属性----------");
List<JXNode> jxNodes_user_name_number=jxDocument.selN("//user/name[@number]");
for(JXNode jxNode:jxNodes_user_name_number){
System.out.println(jxNode);
}
System.out.println("--------用xpath语法获取所有标签name标签,且该name标签的直属父级为user标签,并且该name标签拥有number属性,并且number属性值为kasumi_0003的----------");
List<JXNode> jxNodes_user_name_number_val=jxDocument.selN("//user/name[@number='kasumi_0003']");
for(JXNode jxNode:jxNodes_user_name_number_val){
System.out.println(jxNode);
}
}
}
关键字词:xml,解析,Jsoup,Xpath