java 多线程使用dom4j_Java操作XML(6)--使用dom4j处理XML

本文介绍如何在Java中使用Dom4j库进行XML解析、XPath查询及生成XML文件。示例展示了读取XML文件,通过XPath选择节点,以及创建XML文档的过程。
摘要由CSDN通过智能技术生成

packagecom.abc.demo.general.xml;importorg.dom4j.Document;importorg.dom4j.DocumentHelper;importorg.dom4j.Element;importorg.dom4j.Node;importorg.dom4j.io.OutputFormat;importorg.dom4j.io.SAXReader;importorg.dom4j.io.XMLWriter;importorg.junit.Test;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importjava.io.ByteArrayOutputStream;importjava.util.List;/*** 使用dom4j处理xml*/

public classDom4jCase {private static Logger logger = LoggerFactory.getLogger(Dom4jCase.class);/*** 解析xml

*@throwsException*/@Testpublic void parse() throwsException {

SAXReader reader= newSAXReader();

Document document= reader.read(DomCase.class.getResourceAsStream("student.xml"));//Document document = DocumentHelper.parseText(xmlString);//解析字符串

Element root =document.getRootElement();

List list = root.elements("student");for (int i = 0; i < list.size(); i++) {

Element student=list.get(i);

logger.info("学生编号{}", student.attributeValue("rollno"));

logger.info("testattr:{}", student.attributeValue("testattr"));

logger.info("firstname:{}", student.elementText("firstname"));

logger.info("lastname:{}", student.elementText("lastname"));

logger.info("nickname:{}", student.elementText("nickname"));

logger.info("marks:{}", student.elementText("marks"));

}

}/*** xpath使用

*@throwsException*/@Testpublic void xpath() throwsException {

SAXReader reader= newSAXReader();

Document document= reader.read(DomCase.class.getResourceAsStream("student.xml"));

logger.info("查找所有的存在rollno属性的student节点,取出lastname的值");

List list = document.selectNodes("//student[@rollno]/lastname/text()");//第二、三位学生//List list = document.selectNodes("//student[@rollno]/child::lastname/test()");//效果同上

for (int i = 0; i < list.size(); i++) {

Node node=list.get(i);

logger.info(node.getText());

}

logger.info("查找所有的存在rollno属性的student节点");

list= document.selectNodes("//school:student[@rollno]");//第一位学生

for (int i = 0; i < list.size(); i++) {

Node node=list.get(i);//获取rollno的属性值

logger.info(node.valueOf("@rollno"));

}

}/*** 生成xml*/@Testpublic void toXml() throwsException {

Document document=DocumentHelper.createDocument();

Element root= document.addElement("school:class", "http://www.w3.org/TR/html4/school/");//第一个学生

Element student = root.addElement("school:student");

student.addAttribute("rollno", "1");

student.addAttribute("school:testattr", "test");

student.addElement("school:firstname").setText("cxx1");

student.addElement("lastname").setText("Bob1");

student.addElement("nickname").setText("stars1");

student.addElement("marks").setText("85");//第二个学生

student = root.addElement("student");

student.addAttribute("rollno", "2");

student.addElement("school:firstname").setText("cxx2");

student.addElement("lastname").setText("Bob2");

student.addElement("nickname").setText("stars2");

student.addElement("marks").setText("85");//第三个学生

student = root.addElement("student");

student.addAttribute("rollno", "3");

student.addElement("school:firstname").setText("cxx3");

student.addElement("lastname").setText("Bob3");

student.addElement("nickname").setText("stars3");

student.addElement("marks").setText("85");//直接转成字符串//logger.info(document.asXML());//格式化并输出到输出流

ByteArrayOutputStream out = newByteArrayOutputStream();

OutputFormat format=OutputFormat.createPrettyPrint();

XMLWriter writer= newXMLWriter(out, format);

writer.write(document);

logger.info(out.toString());

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值