1.maven引入jdom2
<dependency>
<groupId>org.jdom</groupId>
<artifactId>jdom2</artifactId>
<version>2.0.6</version>
</dependency>
2.实例
import java.io.FileOutputStream;
import java.util.List;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;
public class MemInfoParserJDOM {
/**
* log4j2日志
*/
protected static Logger log = LogManager.getLogger();
public static void main(String[] args) {
String path = "/data/workspace/tec-demo/src/main/java/cn/tinyf/demo/xml/jdom/jdom-data.xml";
MemInfoParserJDOM dj = new MemInfoParserJDOM();
dj.createXml(path);
dj.parserXml(path);
}
/**
* 生成XML
*
* @param filePath
* 文件路径
*/
public void createXml(String filePath) {
// 创建根节点
Element root = new Element("MemInfo");
root.setAttribute("class", "0501");
// 创建第一个子节点
root.addContent(createElementPerson(1, "James", 32));
// 创建第二个子节点
root.addContent(createElementPerson(2, "Kim", 38));
// 创建第二个子节点
root.addContent(createElementPerson(3, "Joe", 24));
// 根节点添加到文档Document中
Document document = new Document(root);
try {
// 输出到文件
XMLOutputter XMLOut = new XMLOutputter();
Format f = Format.getPrettyFormat();
f.setEncoding("UTF-8");// default=UTF-8
XMLOut.setFormat(f);
XMLOut.output(document, new FileOutputStream(filePath));
} catch (Exception e) {
log.error(e);
}
}
/**
* 创建学生子节点
*
* @param no
* 学号
* @param name
* 姓名
* @param age
* 年龄
* @return
*/
private Element createElementPerson(int no, String name, int age) {
Element person = new Element("person");
person.setAttribute("no", no + "");
// 姓名子节点
Element nameE = new Element("name");
nameE.addContent(name);
person.addContent(nameE);
// 年龄子节点
Element ageE = new Element("age");
ageE.addContent(age + "");
person.addContent(ageE);
// 返回节点
return person;
}
/**
* 解析XML
*
* @param filePath
* 文件路径
*/
public void parserXml(String fileName) {
try {
// 构建SAX解析器
SAXBuilder builder = new SAXBuilder();
// 解析获得文档对象
Document document = builder.build(fileName);
Element root = document.getRootElement();
//遍历子节点
List<Element> persons = root.getChildren("person");
for (int i = 0; i < persons.size(); i++) {
Element person = persons.get(i);
log.info("学号:{},姓名:{},年龄:{}", person.getAttribute("no").getValue(), person.getChildText("name"),
person.getChildText("age"));
}
} catch (Exception e) {
log.error(e);
}
}
}