XML文档结构
XML
- 使用简单标记来描述数据
- 可扩展标记语言
XML文档要求
- 必须有XML声明语句
- 必须有且仅有一个根元素
- 标签大小写敏感 属性值用双引号包裹
- 标签成对
- 元素正确嵌套
主要应用场景(作用):
• 数据持久化
• 数据交换
• 参数配置
核心类
一般情况下使用XML都是用第三方类库
实例
创建maven项目
在maven项目中的pom文件中导入DOM4j类
在pom文件中导入xml的依赖 DOM4 在maven仓库中可以查到
输出xml文件
代码:
public class XmlTest {
public static void main(String[] args) {
//指定xml文档
File f=new File("xml/data.xml");
File path=new File("xml/");
if(!path.exists()){
path.mkdir();
}
//XML解析器
SAXReader saxReader=new SAXReader();
try{
//加载本地xml
//Document document=saxReader.read(f);
Document document = DocumentFactory.getInstance().createDocument("utf-8");//设置编码格式
Element root = document.addElement("root");//建立结点
Element row1 = DocumentHelper.createElement("row");//建立结点
Element newsid1 = DocumentHelper.createElement("newsid");//建立结点
Element title1 = DocumentHelper.createElement("title");//建立结点
newsid1.addText("1");
title1.addText("今天香港机场停运了");
Element row2 = DocumentHelper.createElement("row");
Element newsid2 = DocumentHelper.createElement("newsid");
Element title2 = DocumentHelper.createElement("title");
newsid2.addText("2");
title2.addText("香港闹革命,要打击");
root.add(row1);//在root里面嵌套row
root.add(row2);//在root里面嵌套row
row1.add(newsid1);//在row中嵌套ID
row1.add(title1);//在row中嵌套title
row2.add(newsid2);
row2.add(title2);
//设定输出格式
//OutputFormat format=OutputFormat.createCompactFormat();//无空白
OutputFormat format=OutputFormat.createPrettyPrint();//有空白
FileOutputStream outputStream = new FileOutputStream(f);
XMLWriter writer=new XMLWriter(outputStream ,format);
writer.write(document);
writer.close();
}catch (Exception e){
e.printStackTrace();
}
}
}
导入XML文件
public class XmlTest2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//指定xml文档
File f = new File("xml/data.xml");
File path = new File("xml/");
if (!path.exists()) {
path.mkdir();
}
//XML解析器
SAXReader saxReader = new SAXReader();
try {
//加载本地xml
Document document = null;
Element root = null;
if (f.exists()) {
document = saxReader.read(f);
root = document.getRootElement();
} else {
document = DocumentFactory.getInstance().createDocument("utf-8");
root = document.addElement("root");
}
while (true) {
System.out.println("请输入你要维护的数据:(insert 追加 delete 删除 exit 退出):");
String cmd = scanner.next();
if (cmd.equals("exit")) {
break;
}else if(cmd.equals("insert")) {
Element row = DocumentHelper.createElement("row");//设置结点
Element newsidElement = DocumentHelper.createElement("newsid");//设置结点
Element titleElement = DocumentHelper.createElement("title");//设置结点
Integer id = scanner.nextInt();
String title = scanner.next();
newsidElement.addText(id.toString());
titleElement.addText(title);
row.add(newsidElement);
row.add(titleElement);
root.add(row);
}else if(cmd.equals("delete")){
System.out.println("请输入要删除数据的新闻编号");
Integer id = scanner.nextInt();
//遍历整篇xml文档
for(Object obj : root.elements()){
Element row = (Element)obj;
if(row.element("newsid").getText().equals(id.toString())){
root.remove(row);
}
}
}
}
//设定输出格式
//OutputFormat format=OutputFormat.createCompactFormat();//无空白
OutputFormat format = OutputFormat.createPrettyPrint();//有空白
FileOutputStream outputStream = new FileOutputStream(f);
XMLWriter writer = new XMLWriter(outputStream, format);
writer.write(document);
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}