如何使用java语言-Dom4j解析XML文档
小标 2018-07-13 来源 : 阅读 959 评论 0

摘要:本文主要向大家介绍了如何使用java语言-Dom4j解析XML文档,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

本文主要向大家介绍了如何使用java语言-Dom4j解析XML文档,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

<!-- 
xml转义字符:可以把一些具有特殊含义的字符,使用转义字符表示出来
< <
> >
" "
' '
& &
需求:1<3 == 5>7 在xml中的写法
-->
.<!-- 
需求:
把以下内容以文本的形式显示出来,可以使用转义字符
<bean id="abc">
<property name="haha" value="123"></property>
<property name="haha" value="123"></property>
<property name="haha" value="123"></property>
</bean>
可以使用CDATA区完成
CDATA区:里边的内容都会以文本的方式展示出来
格式:
<![CDATA[
任意的内容(都是文本)
]]>
-->
<!-- 
使用dtd约束文档的步骤:
1.每一个dtd约束文档中都会有一行代码以<!DOCTYPE开头,复制过来放在xml文档中
a.!DOCTYPE:固定的dtd约束文档的格式
b.beans:规定xml文档中的根元素只能叫beans
c.SYSTEM:系统,dtd约束文档来源本地的操作系统
d."bean.dtd":约束文档的位置,我们使用的约束文档在当前文件夹下,可以使用"bean.dtd"
2.根据根元素的名字,写出根元素
3.鼠标放在根元素上/或者按f2,根据提示写出xml文档
?:代表元素只能出现0次或者1次
+:代表元素能出现1次或者1次以上
*:代表元素能出现0次,1次或者1次以上(任意次数)
():一组数据
|:选择关系,只能在多个元素之间选择一个
,顺序关系 规定:a,b,c 写xml文档只能按照a,b,c顺序编写
-->
<!-- 
1.每一个schema文档都会有一个根元素的开始标签<beans...>,把开始标签复制过来,添加一个结束标签
2.鼠标放在根元素上/f2,根据提示写出xml文档
-->
<!-- 
schema约束文档的使用
1.每一个schema约束文档,都必须有一个命名空间(namespace)
起名要求:全球唯一
使用域名(网址)命名:
bean-schema.xsd文档的中命名空间
targetNamespace="www.itcast.cn/bean"
2.在xml文档中声明命名空间
默认声明:
xmlns="www.itcast.cn/bean"
<bean></bean>
显示声明:
xmlns:my="www.itcast.cn/bean"
<my:bean></my:bean>
3.声明schema约束文档的位置
先声明官方文档的位置
xmlns:xsi="www.w3.org/2001/XMLSchema-instance"
根据官方文档声明自定义schema文档的位置
xsi:schemaLocation="www.itcast.cn/bean bean-schema.xsd"
:命名空间
bean-schema.xsd:schema文档的位置
-->
使用dom4j解析xml文档
* 1.SAXReader对象(dom4j核心类)
a) read(…) 加载执行xml文档
2. Document对象
a) Element e = getRootElement() 获得根元素
3. Element对象
a) Element [] eleArr = elements(…) 获得指定名称的所有子元素。可以不指定名称
b) element(…) 获得指定名称第一个子元素。可以不指定名称
c) getName() 获得当前元素的元素名
d) attributeValue(…) 获得指定属性名的属性值
e) elementText(…) 获得指定名称子元素的文本值
f) getText() 获得当前元素的文本内容
操作步骤:
1.创建dom4j核心对象SAXReader
2.使用SAXReader中read方法读取xml文档,生成Document对象
3.使用Document中方法getRootElement获取根元素Element
4.使用Element中的方法elements获取所有bean元素
5.遍历包含bean元素的集合,获取每一个bean元素
6.使用Element中的方法attributeValue获取bean元素上属性的值
7.使用Element中的方法elements获取所有property元素
8.遍历包含property元素的集合,获取每一个property元素
9.使用Element中的方法attributeValue获取property元素上属性的值
10.使用Element中的方法getText获取获取property元素上文本值

1 public class UseDom4jParseXML {
2     public static void main(String[] args) throws Exception {
3         //1.创建dom4j核心对象SAXReader
4         SAXReader sax = new SAXReader();
5         //2.使用SAXReader中read方法读取xml文档,生成Document对象
6         Document docu = sax.read("bean.xml");
7         //3.使用Document中方法getRootElement获取根元素Element
8         Element rootElement = docu.getRootElement();
9         //4.使用Element中的方法elements获取所有bean元素
10         List<Element> beanElementList = rootElement.elements();
11         //5.遍历包含bean元素的集合,获取每一个bean元素
12         for (Element beanElement : beanElementList) {
13             String beanName = beanElement.getName();
14             System.out.println(beanName);
15             //6.使用Element中的方法attributeValue获取bean元素上属性的值
16             String idValue = beanElement.attributeValue("id");
17             System.out.println("\tbean元素的属性id:"+idValue);
18             String classNameValue = beanElement.attributeValue("className");
19             System.out.println("\tbean元素的属性className:"+classNameValue);
20             //7.使用Element中的方法elements获取所有property元素
21             List<Element> propertyElementList = beanElement.elements();
22             //8.遍历包含property元素的集合,获取每一个property元素
23             for (Element propertyElement : propertyElementList) {
24                 System.out.println("\t\t"+propertyElement.getName());
25                 //9.使用Element中的方法attributeValue获取property元素上属性的值
26                 String nameValue = propertyElement.attributeValue("name");
27                 System.out.println("\t\t\tproperty元素的属性name:"+nameValue);
28                 String valueValue = propertyElement.attributeValue("value");
29                 System.out.println("\t\t\tproperty元素的属性value:"+valueValue);
30                 //10.使用Element中的方法getText获取获取property元素上文本值
31                 String text = propertyElement.getText();
32                 System.out.println("\t\t\tproperty元素的文本:"+text);
33             }
34         }
35     }
36 }

   

BeanUtils工具类
使用BeanUitls公共,给类中的成员变量注入(赋)值

   

1 /* 
2  * 创建MyBeanUtils工具类,增强populate方法 
3  */ 
4 public class MyBeanUtils { 
5     //把构造方法私有,不让外界通过创建对象的方式调用方法 
6     private MyBeanUtils() { 
7     } 
8      
9     /*
10      * 定义一个方法(让用户使用自己定义的populate方法不用处理异常)
11      *     1.参数传递JavaBean对象的Class文件对象
12      *     2.内部通过反射创建Javabean对象
13      *     3.调用BeanUtils工具类的方法populate
14      *     4.对populate方法的异常进行try...catch处理
15      *     5.把对象返回给用户
16      *     6.把参数Class对象增加一个泛型,让用户传递什么类型的JavaBean,就返回什么类型的JavaBean
17      *
18      * 定义含有泛型的方法:调用方法时确定数据类型
19      *         修饰符 <定义泛型> 返回值类型 方法名(参数<使用泛型>){
20      *             方法体
21      *         }
22      *
23      *
24      * 方法的参数:
25      *         Class clazz
26      *         Map<String,String[]> properties
27      * 方法的返回值类型:
28      *         Object
29      */
30     public static <E> E populate03(Class<E> clazz, Map<String,String[]> properties){
31         try {
32             //2.内部通过反射创建Javabean对象
33             E obj = clazz.newInstance();
34             //3.调用BeanUtils工具类的方法populate
35             BeanUtils.populate(obj, properties);
36             //5.把对象返回给用户
37             return obj;
38         } catch (Exception e) {
39             //4.对populate方法的异常进行try...catch处理
40             e.printStackTrace();
41             //把编译异常,转换为运行时异常,给成员变量注入值失败,让程序停止下来
42             throw new RuntimeException("注入值失败");
43         }
44     }
45     
46     /*
47      * 定义一个方法(让用户使用自己定义的populate方法不用处理异常)
48      *     1.参数传递JavaBean对象的Class文件对象
49      *     2.内部通过反射创建Javabean对象
50      *     3.调用BeanUtils工具类的方法populate
51      *     4.对populate方法的异常进行try...catch处理
52      *     5.把对象返回给用户
53      *
54      * 方法的参数:
55      *         Class clazz
56      *         Map<String,String[]> properties
57      * 方法的返回值类型:
58      *         Object
59      */
60     public static Object populate02(Class clazz, Map<String,String[]> properties){
61         try {
62             //2.内部通过反射创建Javabean对象
63             Object obj = clazz.newInstance();
64             //3.调用BeanUtils工具类的方法populate
65             BeanUtils.populate(obj, properties);
66             //5.把对象返回给用户
67             return obj;
68         } catch (Exception e) {
69             //4.对populate方法的异常进行try...catch处理
70             e.printStackTrace();
71             //把编译异常,转换为运行时异常,给成员变量注入值失败,让程序停止下来
72             throw new RuntimeException("注入值失败");
73         }
74         
75     }
76     
77     /*
78      * 定义一个方法(让用户使用自己定义的populate方法不用处理异常)
79      *     1.调用BeanUtils工具类的方法populate
80      *     2.对populate方法的异常进行try...catch处理
81      *
82      * 方法的参数:
83      *         Object bean
84      *         Map<String,String[]> properties
85      * 方法的返回值类型:
86      *         void
87      */
88     public static void populate01(Object bean, Map<String,String[]> properties){
89         try {
90             //1.调用BeanUtils工具类的方法populate
91             BeanUtils.populate(bean, properties);
92         } catch (Exception e) {
93             //2.对populate方法的异常进行try...catch处理
94             e.printStackTrace();
95             //把编译异常,转换为运行时异常,给成员变量注入值失败,让程序停止下来
96             throw new RuntimeException("注入值失败");
97         }
98     }
99 }
100 package cn.itcast.dmeo03.MyBeanUtils;
101
102 import java.util.HashMap;
103 import java.util.Map;
104
105 import org.junit.Test;
106
107 import cn.itcast.dmeo01.bean.User;
108
109 /*
110  * 使用自定义工具类MyBeanUtils
111  */
112 public class UseMyBeanUtils {
113     @Test
114     public void demo03(){
115         //创建Map集合,key是String类型,value是String类型的数组
116         Map<String,String[]> properties = new HashMap<String,String[]>();
117         properties.put("id", new String[]{"123"});
118         properties.put("username", new String[]{"root","admin"});
119         properties.put("password", new String[]{"root","123456"});
120         properties.put("hobbies", new String[]{"吃","睡","玩","敲代码"});
121         //调用MyBeanUtils工具类中的方法populate02
122         User u = MyBeanUtils.populate03(User.class, properties);
123         System.out.println(u);
124     }
125    
126     @Test
127     public void demo02(){
128         //创建Map集合,key是String类型,value是String类型的数组
129         Map<String,String[]> properties = new HashMap<String,String[]>();
130         properties.put("id", new String[]{"123"});
131         properties.put("username", new String[]{"root","admin"});
132         properties.put("password", new String[]{"root","123456"});
133         properties.put("hobbies", new String[]{"吃","睡","玩","敲代码"});
134         //调用MyBeanUtils工具类中的方法populate02
135         User u = (User) MyBeanUtils.populate02(User.class, properties);
136         System.out.println(u);
137     }
138    
139     @Test
140     public void demo01(){
141         //创建JavaBean对象
142         User u = new User();
143         //创建Map集合,key是String类型,value是String类型的数组
144         Map<String,String[]> properties = new HashMap<String,String[]>();
145         properties.put("id", new String[]{"123"});
146         properties.put("username", new String[]{"root","admin"});
147         properties.put("password", new String[]{"root","123456"});
148         properties.put("hobbies", new String[]{"吃","睡","玩","敲代码"});
149         //调用MyBeanUtils工具类中的方法populate01
150         MyBeanUtils.populate01(u, properties);
151         System.out.println(u);
152     }
153 }


1 /*
2  * 综合案例:XML+dom4j+反射+BeanUtils
3  *     1.使用xml存储JavaBean的全类名和属性名属性值
4  *     2.使用dom4j解析xml
5  *     3.使用反射技术根据解析出的全类名创建JavaBean对象
6  *     4.使用BeanUtils中的方法setProperty给成员变量注入值
7  */
8 public class UseDom4jparseXMLToJavaBean {
9     public static void main(String[] args) throws Exception {
10         //2.使用dom4j解析xml
11         //获取dom4j的核心类SAXReader
12         SAXReader sax = new SAXReader();
13         //使用SAXReader中的read读取xml,创建Document对象
14         Document docu = sax.read("src/cn/itcast/dmeo05/domain/data.xml");
15         //使用Document中的方法getRootElement获取根元素
16         Element rootElement = docu.getRootElement();
17         //使用Element中的方法elements获取所有的bean元素,放入集合中
18         List<Element> beanElementList = rootElement.elements();
19         //遍历beanElementList集合
20         for (Element beanElement : beanElementList) {
21             //获取beanElement上的变的属性className
22             String className = beanElement.attributeValue("className");
23             //3.使用反射技术根据解析出的全类名创建JavaBean对象
24             Class clazz = Class.forName(className);
25             Object obj = clazz.newInstance();
26             //使用Element中的方法elements获取所有的property元素,放入集合中
27             List<Element> propertyElementList = beanElement.elements();
28             //遍历propertyElementList集合
29             for (Element propertyElement : propertyElementList) {
30                 //获取propertyElement上的属性name(属性名)和value(属性值)
31                 String name = propertyElement.attributeValue("name");
32                 String value = propertyElement.attributeValue("value");
33                 //4.使用BeanUtils中的方法setProperty给成员变量注入值
34                 BeanUtils.setProperty(obj, name, value);
35             }
36             //打印JavaBean对象
37             System.out.println(obj);
38         }
39     }
40
41 }
   
 
 
/**
 
 
 * 无参的构造方法:
 
 
 * 当我们没有定义构造方法时,编译器会自动
 
 
 * 帮我们添加一个默认的构造方法。
 
 
 * 默认构造方法:
 
 
 * 无参数,且没有任何实现代码。如下。
 
 
 * 若我们定义过任何构造方法,编译器不会为
 
 
 * 我们添加该默认构造方法,若需要,则手动
 
 
 * 书写
 
 
 */
 
 
public Emp(){
 
 
 
 
}
 
 
 
 
 
 
public int getId() {
 
 
return id;
 
 
}
 
 
public void setId(int id) {
 
 
this.id = id;
 
 
}
 
 
public String getName() {
 
 
return name;
 
 
}
 
 
public void setName(String name) {
 
 
this.name = name;
 
 
}
 
 
public int getAge() {
 
 
return age;
 
 
}
 
 
public void setAge(int age) {
 
 
this.age = age;
 
 
}
 
 
public String getGender() {
 
 
return gender;
 
 
}
 
 
public void setGender(String gender) {
 
 
this.gender = gender;
 
 
}
 
 
public int getSalary() {
 
 
return salary;
 
 
}
 
 
public void setSalary(int salary) {
 
 
this.salary = salary;
 
 
}
 
 
 
 
public String toString(){
 
 
return id+","+name+","+age+","+gender+","+salary;
 
 
}
 
 
 
 
}

 

 

 

 


1.2

解析代码

 

package demoXml;
 
 
 
 
 
import java.io.File;
 
 
import java.util.ArrayList;
 
 
import java.util.List;
 
 
 
 
 
import org.dom4j.Attribute;
 
 
import org.dom4j.Document;
 
 
import org.dom4j.Element;
 
 
import org.dom4j.io.SAXReader;
 
 
 
 
 
/**
 
 
 * 使用DOM解析XML文件
 
 
 * @author Administrator
 
 
 *
 
 
 */
 
 
public class XMLDemo1 {
 
 
public static void main(String []args){
 
 
try{
 
 
/*
 
 
 * 解析XML文件的基本流程
 
 
 * 1:创建SAXReader,用来读取XML
 
 
 *   文件
 
 
 * 2:指定xml文件使得SAXReader读取,
 
 
 *   并解析问文档对象Document
 
 
 * 3:获取根元素
 
 
 * 4:获取每一个元素,从而达到解析的
 
 
 *   目的。    
 
 
 */
 
 
//1
 
 
//org.dom4j.xxxx
 
 
SAXReader reader
 
 
= new SAXReader();
 
 
 
 
//2
 
 
/*
 
 
 * 常用的读取方法
 
 
 * Document read(InputStream in)
 
 
 * Document read(Reader read)
 
 
 * Document read(File file)
 
 
 */
 
 
File xmlFile
 
 
= new File("emp.xml");
 
 
//2
 
 
/*
 
 
 * read方法的作用:
 
 
 * 读取给定的xml,并将其解析转换为
 
 
 * 一个Document对象。
 
 
 * 实际上这里已经完成了对整个xml
 
 
 * 解析的工作。并将所有内容封装到了
 
 
 * Document对象中。
 
 
 * Document对象可以描述当前xml文档
 
 
 */
 
 
Document doc
 
 
= reader.read(xmlFile);
 
 
 
 
//3
 
 
Element root
 
 
= doc.getRootElement();
 
 
 
 
//4
 
 
/*
 
 
 * Element element(String name)
 
 
 * 获取当前标签下第一个名为给定
 
 
 * 名字的标签
 
 
 *
 
 
 * List elements(String name)
 
 
 * 获取当前标签下所有给定名字的
 
 
 * 标签
 
 
 *
 
 
 * List elements()
 
 
 * 获取当前标签下的所有子标签。
 
 
 */
 
 
List<Element> elements
 
 
= root.elements();
 
 
/*
 
 
 * 创建一个集合,用于保存xml中
 
 
 * 的每一个用户信息。我们先将
 
 
 * 用户信息取出,然后创建一个Emp
 
 
 * 实例,将信息设置到该实例的相应
 
 
 * 属性上。最终将所有emp对象存入
 
 
 * 该集合。
 
 
 */
 
 
List<Emp> list
 
 
= new ArrayList<Emp>();
 
 
/*
 
 
 * 遍历每一个emp标签
 
 
 */
 
 
for(Element emp : elements){
 
 
//创建一个Emp对象,用于保存信息
 
 
Emp e = new Emp();
 
 
 
 
//解析emp标签
 
 
//获取name的值
 
 
/*
 
 
 * 首先,获取名为"name"的子标签
 
 
 * 其次,获取前后标签中间的文本
 
 
 */
 
 
Element ename
 
 
= emp.element("name");
 
 
String name
 
 
= ename.getText();
 
 
 
 
//获取年龄
 
 
/*
 
 
 * String elementText(String name)
 
 
 * 获取当前标签中名为给定名字的子标签
 
 
 * 中间的文本
 
 
 * 该方法与上面获取“name”的两句话等效
 
 
 */
 
 
String ageStr
 
 
= emp.elementText("age");
 
 
int age
 
 
= Integer.parseInt(ageStr);
 
 
 
 
//解析性别
 
 
String gender
 
 
= emp.elementText("gender");
 
 
 
 
//解析工资
 
 
int salary
 
 
= Integer.parseInt(
 
 
 emp.elementText("salary")
 
 
  );
 
 
 
 
e.setAge(age);
 
 
e.setName(name);
 
 
e.setGender(gender);
 
 
e.setSalary(salary);
 
 
 
 
/*
 
 
 * 通过Element获取元素属性
 
 
 *
 
 
 * Attribute attribute(String name)
 
 
 * 获取当前标签中指定名字的属性
 
 
 */
 
 
//获取id属性
 
 
Attribute attr
 
 
= emp.attribute("id");
 
 
//获取该属性的值
 
 
/*
 
 
 * Attribute表示一个属性,常用方法:
 
 
 *
 
 
 * String getValue()
 
 
 * 获取该属性的值
 
 
 *
 
 
 * String getName()
 
 
 * 获取该属性的名字
 
 
 */
 
 
int id =Integer.parseInt(
 
 
attr.getValue()
 
 
);
 
 
 
 
e.setId(id);
 
 
//将Emp对象存入集合
 
 
list.add(e);
 
 
}
 
 
 
 
System.out.println(
 
 
"解析了"+list.size()+
 
 
"个员工信息");
 
 
 
 
//输出每一个员工信息
 
 
for(Emp e : list){
 
 
System.out.println(e);
 
 
}
 
 
 
 
 
 
}catch(Exception e){
 
 
 
 
}
 
 
}
 
 
}
 
 
 
 
 
二写入XML
 
package demoXml;
 
 
 
 
 
import java.io.FileOutputStream;
 
 
import java.util.ArrayList;
 
 
import java.util.List;
 
 
 
 
 
import org.dom4j.Document;
 
 
import org.dom4j.DocumentHelper;
 
 
import org.dom4j.Element;
 
 
import org.dom4j.io.XMLWriter;
 
 
 
 
 
/**
 
 
 * 使用DOM写出一个XML
 
 
 * @author Administrator
 
 
 *
 
 
 */
 
 
public class XMLDemo2 {
 
 
public static void main(String[] args){  
 
 
List<Emp> list
 
 
= new ArrayList<Emp>();
 
 
list.add(
 
 
new Emp(1,"jack",33,"男",5000)
 
 
);
 
 
list.add(
 
 
new Emp(2,"boss",55,"男",55000)
 
 
);
 
 
list.add(
 
 
new Emp(3,"marry",22,"女",3500)
 
 
);
 
 
list.add(
 
 
new Emp(4,"kate",25,"女",6000)
 
 
);
 
 
list.add(
 
 
new Emp(5,"tom",32,"男",8500)
 
 
);
 
 
 
 
/*
 
 
 * 生成一个xml的基本步骤
 
 
 * 1:创建文档对象Document
 
 
 * 2:为Document添加根节点
 
 
 * 3:为根节点组建树状结构
 
 
 * 4:创建XMLWriter
 
 
 * 5:为XMLWriter指定写出目标
 
 
 * 6:写出xml
 
 
 */
 
 
//1
 
 
//通过DocumentHelper创建Document对象
 
 
Document doc
 
 
= DocumentHelper.createDocument();
 
 
 
 
//2
 
 
/*
 
 
 * Document的方法
 
 
 * Element addElement(String name)
 
 
 * 该方法用于向文档中添加给定名字的
 
 
 * 根元素,返回的Element实例就表示该
 
 
 * 根元素
 
 
 * 需要注意的是,该方法只能调用一次。
 
 
 * 调用第二次会抛出异常。
 
 
 */
 
 
Element root
 
 
= doc.addElement("list");
 
 
/*
 
 
 * 循环添加每一个员工信息
 
 
 */
 
 
for(Emp e : list){
 
 
/*
 
 
 * Element同样支持方法:
 
 
 * Element addElement(String name)
 
 
 * 向当前标签中添加给定名字的子标签
 
 
 */
 
 
//向根标签中添加emp标签
 
 
Element emp
 
 
= root.addElement("emp");
 
 
 
 
//向emp标签中添加子标签name
 
 
Element name
 
 
= emp.addElement("name");
 
 
name.addText(e.getName());
 
 
//向emp标签中添加子标签age
 
 
emp.addElement("age")
 
 
.addText(e.getAge()+"");
 
 
emp.addElement("gender")
 
 
.addText(e.getGender());
 
 
emp.addElement("salary")
 
 
.addText(e.getSalary()+"");
 
 
 
 
 
/*
 
 
 * 为标签添加属性
 
 
 * Element addAttribute(
 
 
 *   String name,String value
 
 
 * )
 
 
 * 为当前标签添加给定名字以及对应值的
 
 
 * 属性
 
 
 * 返回值仍然为当前标签。
 
 
 * 这样做的目的是可以连续添加若干属性
 
 
 * 就好像StringBuilder的append的
 
 
 * 返回值效果和作用。
 
 
 */
 
 
emp.addAttribute("id",e.getId()+"");
 
 
 
 
}
 
 
 
 
/*
 
 
 * 当退出循环后,那么Document中的
 
 
 * 结构就已经构建完了
 
 
 * 需要将其写出为xml
 
 
 */
 
 
try{
 
 
XMLWriter writer
 
 
= new XMLWriter();
 
 
 
 
FileOutputStream out
 
 
= new FileOutputStream(
 
 
"myemp.xml");
 
 
 
 
writer.setOutputStream(out);
 
 
/*
 
 
 * 将Document对象写出到文件中
 
 
 * 这时会将Document转换为xml格式
 
 
 * 写入文件。
 
 
 */
 
 
writer.write(doc);
 
 
 
 
writer.close();
 
 
}catch(Exception e){
 
 
 
 
}
 
 
}
 
 
}
 
 
 
 
 
三
DOM4J对XPATH的支持
 
package demoXml;
 
 
 
 
 
import java.io.File;
 
 
import java.util.List;
 
 
 
 
 
import org.dom4j.Document;
 
 
import org.dom4j.Element;
 
 
import org.dom4j.io.SAXReader;
 
 
 
 
 
/**
 
 
 * DOM4J对XPATH的支持
 
 
 * @author Administrator
 
 
 *
 
 
 */
 
 
public class XMLDemo3 {
 
 
public static void main(String[] args){
 
 
try{
 
 
//读取xml文件转换为Document
 
 
SAXReader reader
 
 
= new SAXReader();
 
 
 
 
Document doc
 
 
= reader.read(
 
 
new File("myemp.xml")
 
 
);
 
 
String path
 
 
= "/list/emp[gender='女']" +
 
 
"/salary[.>4000]";
 
 
/*
 
 
 * List selectNodes(String xpath)
 
 
 * 根据给定的XPATH查询对应的节点
 
 
 */
 
 
List list
 
 
= doc.selectNodes(path);
 
 
for(Object o : list){
 
 
Element e = (Element)o;
 
 
System.out.println(e.getText());
 
 
}
 
 
 
 
}catch(Exception e){
 
 
e.printStackTrace();
 
 
}
 
 
}
 
}
本文由职坐标整

理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!


本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程