1.导入dom4j 2.2.1
并使用buildpath方式 config buildpath/add libary添加到java工程里
如果报如下错误,则需要改变会java9以前的版本(项目使用java8的jar来创建):
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.dom4j.io.SAXContentHandler (file:/E:/MyEclipseWorkspace/EX016XML_Parser/dom4j-1.6.1.jar) to method com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser$LocatorProxy.getEncoding()
WARNING: Please consider reporting this to the maintainers of org.dom4j.io.SAXContentHandler
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
2.使用dom4j解析xml文档
java记录一下使用DOM4J-2.1.1解析XML文件的基本方法
1、创建xml文档stus.xml
<?xml version="1.0" encoding="UTF-8"?>
<Stus>
<stu>
<name>张三</name>
<age>18</age>
<address>深圳</address>
</stu>
<stu>
<name>李四</name>
<age>28</age>
<address>北京</address>
</stu>
<stu>
<name>王五</name>
<age>22</age>
<address>湖南</address>
</stu>
</Stus>
2、导入dom4j并创建MainTest
package com.fengray.test;
import java.io.File;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class MainTest {
public static void main(String[] args) {
//1.创建sax对象
SAXReader reader=new SAXReader();
try {
//2.指定解析的xml源
Document document=reader.read(new File("src/xml/stus.xml"));
//3.得到元素
Element rootElement=document.getRootElement();
//4.得到根元素下面的子元素
System.out.println(rootElement.element("stu").element("address").getText()) ;//得到深圳
//5.遍历所有的子元素中的值
List<Element> elements=rootElement.elements();
Iterator<Element> eleIterator=elements.iterator();
while (eleIterator.hasNext()) {
Element element=eleIterator.next();
String name=element.element("name").getText();
String age=element.element("age").getText();
String address=element.element("address").getText();
System.out.println(name+" "+age+" "+address);
}
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
结果是:
深圳
张三 18 深圳
李四 28 北京
王五 22 湖南
3.使用dom4j的Xpath解析xml文档
针对嵌套较多的xml文档结构,可以使用xpath进行解析
1、添加jaxen包
参考文章
2、java文件:
package com.fengray.test;
import java.io.File;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
public class MainTest {
public static void main(String[] args) {
//1.创建sax对象
SAXReader reader=new SAXReader();
try {
//2.指定解析的xml源
Document document=reader.read(new File("src/xml/stus.xml"));
//3.得到元素
Element rootElement=document.getRootElement();
//4.导入jaxen包,获得Xpath支持
System.out.println("--------获取一个节点的name元素---------");
Element nameElement=(Element) rootElement.selectSingleNode("//name");//获取一个节点name元素
System.out.println(nameElement.getText());
System.out.println("--------获取多个节点的name元素---------");
List <Element>list=rootElement.selectNodes("//name");//Xpath语法,获得多个节点
for (Element element : list) {
System.out.println(element.getText());
}
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
结果是:
--------获取一个节点的name元素---------
张三
--------获取多个节点的name元素---------
张三
李四
王五
4.给Tomcat配置虚拟路径
1.直接在tomcat的webapps的root目录下存放网站源文件
2. 配置虚拟路径(当同时配置多个网站的时候,这种配置是最好用的)
使用localhost:8080 打开tomcat首页, 在左侧找到tomcat的文档入口, 点击进去后, 在左侧接着找到 Context入口,点击进入。
http://localhost:8080/docs/config/context.html
-
在conf/server.xml 找到host元素节点。
-
加入以下内容。
<Context docBase="D:\xml02" path="/a"></Context>// a目录是希望在地址栏显示的目录,但实际并不存在该目录
docBase : 项目的路径地址 如: D:\xml02\person.xml
path : 对应的虚拟路径 一定要以/打头。
对应的访问方式为: http://localhost:8080/a/person.xml
- 在浏览器地址栏上输入: http://localhost:8080/a/person.xml
多网站配置时:
3. 使用xml文件配置虚拟路径
-
在tomcat/conf/catalina/localhost/ 文件夹下新建一个xml文件,名字可以自己定义。 person.xml
-
在这个文件里面写入以下内容
<?xml version='1.0' encoding='utf-8'?>
类似的:
-
在浏览器上面访问
http://localhost:8080/person/xml的名字即可
类似的:
http://localhost:8080/fengray/
4.给Eclipse配置Tomcat
-
在server里面 右键新建一个服务器, 选择到apache分类, 找到对应的tomcat版本, 接着一步一步配置即可。
-
配置完毕后, 在server 里面, 右键刚才的服务器,然后open , 找到上面的Server Location , 选择中间的 Use Tomcat installation…
-
创建web工程, 在WebContent下定义html文件, 右键工程, run as server