package XML_Document.Jsoup; 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.io.IOException; public class Jsoup_Demo01 { public static void main(String[] args) throws IOException { //获取document对象,根据xml获得 //2.1通过类加载器获取myxml的path String path = Jsoup_Demo01.class.getClassLoader().getResource("XML_Document/myxml.xml").getPath(); //2.2 解析xml文档 加载文档进内存,获取dom数 - - > Document Document document = Jsoup.parse(new File(path), "utf-8"); //3.获取元素对象 Elements elements = document.getElementsByTag("name"); //4.获取第一个name的element对象 Element element = elements.get(0); //获取数据 System.out.println(element.text()); } }
package XML_Document.Jsoup; 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.io.IOException; public class Jsoup_Demo02 { public static void main(String[] args) throws IOException { String path = Jsoup_Demo01.class.getClassLoader().getResource("XML_Document/myxml.xml").getPath(); Document document = Jsoup.parse(new File(path), "utf-8"); //这是通过document来获取name标签,可以获取到两个 Elements elements = document.getElementsByTag("name"); System.out.println(elements); //先获取第一个student元素,然后通过element对象获取其子标签name,此时获取到1个 Element element_student01 = document.getElementsByTag("student").get(0); Elements name = element_student01.getElementsByTag("name"); System.out.println(name); System.out.println(name.text()); //获取student对象的属性值 String number = element_student01.attr("number"); System.out.println(number); } }
package XML_Document.Jsoup; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.select.Elements; import java.io.File; import java.io.IOException; public class Jsoup_Demo03 { public static void main(String[] args) throws IOException { String path = Jsoup_Demo01.class.getClassLoader().getResource("XML_Document/myxml.xml").getPath(); Document document = Jsoup.parse(new File(path), "utf-8"); //根据选择器来查找 //1.查找所有name标签 Elements name = document.select("name"); //2.查找id值为3 Elements tag = document.select("#s002"); // System.out.println(tag); //获取student标签里number为s002的age子标签 Elements elements_student = document.select("student[number=\"s002\"]"); System.out.println(elements_student); Elements elements_student_age = document.select("student[number=\"s002\"] > age"); System.out.println("=============="); System.out.println(elements_student_age); } }
* 使用Jsoup的XPath需要额外导入jar包,且要查询W3Cschool参考手册,来完成查询
package XML_Document.Jsoup; import cn.wanghaomiao.xpath.exception.XpathSyntaxErrorException; import cn.wanghaomiao.xpath.model.JXDocument; import cn.wanghaomiao.xpath.model.JXNode; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.select.Elements; import java.io.File; import java.io.IOException; import java.util.List; public class Jsoup_Demo04 { public static void main(String[] args) throws IOException, XpathSyntaxErrorException { String path = Jsoup_Demo01.class.getClassLoader().getResource("XML_Document/myxml.xml").getPath(); Document document = Jsoup.parse(new File(path), "utf-8"); //根据document对象,创建JXDocument对象(因为他支持java语法) JXDocument jxDocument = new JXDocument(document); //4.结合XPath语法查询 //查询所有的student标签 List<JXNode> jxNodes = jxDocument.selN("//student"); for (JXNode jxNode : jxNodes) { System.out.println(jxNode); } System.out.println("=========="); //查询所有student标签下的name标签 List<JXNode> jxNodes1 = jxDocument.selN("//student/name"); for (JXNode jxNode : jxNodes1) { System.out.println(jxNode); } //查询student标签下带有id属性的name标签 List<JXNode> jxNodes2 = jxDocument.selN("//student/name[@id]"); for (JXNode jxNode : jxNodes2) { System.out.println(jxNode); } //查询student标签下带有id属性的name标签 并且id属性值为itcast List<JXNode> jxNodes3 = jxDocument.selN("//student/name[@id=‘001‘]"); for (JXNode jxNode : jxNodes3) { System.out.println(jxNode); } } }
原文:https://www.cnblogs.com/caixiaowu/p/13253947.html