XML
XML语言本身是一种数据以及数据说明的文本格式规范
因为数据传输的方式千奇百怪,为了数据之间传达的方便与统一,XML提供了一套数据存储、交换、表达的标准,被用来结构化、存储以及传输信息。
Dom4J
Dom4J是XML文件的API,可以在JAVA平台上对XML文件进行读写。
XML格式
第一行必加,显示版本号和编码格式。
PS:类似与HTML的格式有首位标签的模式。首标签内可以拥有属性,标签之间可以相互嵌套。
首尾标签之间填写内容。
增–add(demo)
public void add(){
public Document document = null;
// 获取文档的根结点元素标签
Element rootElement = document.getRootElement();
//为根结点元素标签添加子元素标签
Element brand = rootElement.addElement("Brand");
// 设置Brand的属性
brand.addAttribute("name", "小米");
// 为Brand标签添加子元素标签
Element type = brand.addElement("Type");
// 同理
type.addAttribute("name", "CC");
// 将其保存到指定位置
this.saveXml("D:\\Phone.xml");
}
删–delete(demo)
public void delete(){
public Document document = null;
// 假设文档对象里有,获取文档的根节点元素标签
Element rootElement = document.getRootElement();
// 获取根节点的迭代器
Iterator iterator = rootElement.elementIterator();
while (iterator.hasNext()){
// 根节点下面的子节点若是与我们目标值相符
Element brand = (Element)iterator.next();
if (brand.attributeValue("name").equals("苹果")){
// 获取父节点,通过父节点删除自己
brand.getParent().remove(brand);
}
}
this.saveXml("D:\\Phone.xml");
}
改–update(demo)
public void update(){
Element rootElement = document.getRootElement();
Iterator iterator = rootElement.elementIterator();
int id = 0;
while (iterator.hasNext()){
Element brand = (Element)iterator.next();
id++;
brand.addAttribute("id", id + "");
}
this.saveXml("D:\\Phone.xml");
}
查–read(demo)
public void showInfo(){
Element root = document.getRootElement();
Iterator iterator = root.elementIterator();
while (iterator.hasNext()){
Element brand = (Element)iterator.next();
System.out.println(brand.attributeValue("name"));
Iterator types = brand.elementIterator();
while (types.hasNext()){
Element type = (Element)types.next();
System.out.println(type.attributeValue("name"));
}
}
}
加载XML–load(demo)
public void loadDocument(){
try {
SAXReader saxReader = new SAXReader();
document = saxReader.read(new File("D:\\Phone2.xml"));
} catch (DocumentException e) {
e.printStackTrace();
}
}
保存XML–save(load)
public void saveXml(String path){
OutputFormat prettyPrint = OutputFormat.createPrettyPrint();
prettyPrint.setEncoding("UTF-8");
try {
XMLWriter writer = new XMLWriter(new FileWriter(path), prettyPrint);
writer.write(document);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
对于一些常见的使用方法的小型API文档
Document: 文档对象
Element: 节点对象
Attribute:属性对象
//用来载入xml文件的
SAXReader reader = new SAXReader();
Document:属性对象
//获取XML文档对象,同一个路径,两种写法
Document document = reader.read("\\src\\myconfig.xml");
Document document = reader.read("src/myconfig.xml");
Element:属性对象
//获取root(根)节点
Element root=document.getRootElement();
//获取节点下的所有子节点集合
List<Element> classs=root.elements();
//获取节点下名为“class”的子节点集合
List<Element> classs=root.elements("class");
//获取节点下名为show的子节点,如果节点下有多个show子节点,只获取第一个为show的子节点
Element show=root.element("show");
//获取节点下的Text值,(<show>这里排除节点外的就是text值</show>)
String text=show.getText();
//获取节点的名字
String name=element.getName();
Attribute:属性对象
//获取节点的所有属性对象集合
List<Attribute> atts=show.attributes();
//获取节点的名为name的属性对象
Attribute att=show.attribute("name");
//获取节点下指定属性名的值
show.attributeValue("name");
//获取属性对象的属性名
String name=att.getName();
//获取属性对象的属性值
String value=att.getValue();
dom4j的XPath导航------需要另一个dom4j.jar包外另一个包:jaxen-1.1-beta-6.jar
//获取单个节点,如果有多个,只会获取到第一个
Element show=(Element) root.selectSingleNode("/school/show");
//获取school下名为class的子节点集合
List<Element> eles=root.selectNodes("/school/class");
//获取指定节点的指定属性
Attribute nameAtt=(Attribute)root.selectSingleNode("/school/class/group/@name");
public void testCreateXml(){
//创建了一个xml文档
Document doc=DocumentHelper.createDocument();
//添加注释
doc.addComment("这里是注释");
//创建了一个名为students节点,因为是第一个创建,所以是根节点,再通过doc创建一个则会报错。
Element root=doc.addElement("students");
//在root节点下创建一个名为student的节点
Element stuEle=root.addElement("student");
//给student节点添加属性
stuEle.addAttribute("id", "1000");
//给student节点添加一个子节点
Element nameEle=stuEle.addElement("name");
//设置子节点的文本
nameEle.setText("张三");
//用于格式化xml内容和设置头部标签
OutputFormat format = OutputFormat.createPrettyPrint();
//设置xml文档的编码为gbk
format.setEncoding("gbk");
Writer out;
try {
//创建一个输出流对象
out=new FileWriter("src/qunhao.xml");
//创建一个dom4j创建xml的对象
XMLWriter writer = new XMLWriter(out, format);
//调用write方法将doc文档写到指定路径
writer.write(doc);
writer.close();
System.out.print("生成XML文件成功");
} catch (IOException e) {
System.out.print("生成XML文件失败");
e.printStackTrace();
}
}
还有一份英文API帮助文档
链接:https://pan.baidu.com/s/1lnNtWo1U9zVxiVGItv7JKQ
提取码:gyj1