小言_互联网的博客

java使用dom4j进行xml解析

402人阅读  评论(0)

对于xml的解析比较重要,对于爬虫,配置文件很多地方都需要用到xml解析
dom4j解析相对于SAX解析,需要先阅读整个文档,虽然比较耗时,当使用简单,并且可以对xml进行增删改查等操作

基础篇:
使用dom4j于xml解析,第一步操作就是先获得解析器
SAXReader reader=new SAXReader();
第二步,就是要获得整个xml的document
Document document
=reader.read(“src/test.xml”);
第三部,获取xml的根结点(ps:所有的xml都必须要有一个根结点)
Element root=document.getRootElement();
第四步,获取根结点下第一层的结点
List list=root.elements();//获取root目录下的所有结点,用list储存起来
Element e=root.element(“name”);//获取root目录第一个名为name的结点
List list1=root.elements(“name”)//获取root目录下所有名为name的结点
第五步:
如果在第四步的步骤下还存在结点,那么可以继续重复第四步
第六步:
获取结点内的内容
String content=e.getText();

进阶篇:
增添结点
1,创建解析器;如上
2,得到document,如上
3,得到根结点,如上
4;得到你想得到的结点e,如上
5,在e下面直接添加元素
Element sex1=p1.addElement(“sex”);
6:在sex下面直接添加结点
sex1.setText(“nv”);
7;写完之后你需要保存,又称回写
XMLWriter writer= new XMLWriter(new FileOutPutStream(“src/test.xml”),OutputFormat.createPrettyPrint());
//第一个参数是一个文件输出流,输出你想要回写的文件,第二个参数是设置你输出的格式,而我写的这个参数是常见的方式,这个会把你的xml文件自动完成缩进,容易阅读
8,writer.write(document);//将文件写进去
9,writer.close();//关闭流

删除节点
前四步跟上一界所讲一样
第五步:获取结点的父节点:
Element parent =e.getparent();
第六步:删除节点
parent.remove(e);
第七步:回写操作
:与上面的7,8,9步相同;

获取属性值
当你为你的结点添加属性的时候,那么你肯定希望它的属性的值是能够被找到的
列如


这个结点我把它看做e;
然后:
String str=e.attributeValue(“aa”);//你就可以获得属性的值

高级篇 XPATH;
首先需要导入jaxen.jar包
可以直接获取到某个元素
*第一种形式
/AAA/BBB/DDD;表示一层一层的,AAA下面的BBB.BBB下面的DDD
第二种形式
//BBB:表示和这个名称相同,表示只要名称是BBB都能得到;
//BBB/AAA:表示获取所有名称为BBB下面的AAA
第三种形式:
/
:所有元素
第四种形式:
** //BBB[1]//表示获得所有名为BBB下面的第一个元素ps:一般用于selectSingleNode方法里面
第五种形式:
//BBB[@id]//表示只要BBB元素上加了id属性的都会获取到
//BBB[@id=‘id1’]//表示只要元素名称是BBB,并且有id属性,并且id的属性值为b1;
使用方法:
方法1:
List list=document.selectNodes(“xpath形式”);
之后操作与List<Element相似;
方法2:
Node n=document.selectSingleNode(“BBB[1]”);

ps:凡是后面加了这个[]条件限制时selectNodes方法不能判断,还会直接选择全部


转载:https://blog.csdn.net/weixin_45483906/article/details/102467138
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场