- 什么是XML 什么是HTML
a) Xml移动数据岛 数据持久化 XML可以跨平台 兼容多种语言 体积小巧
b) 弱点 第一 数据存储的性价比不高 第二 不安全
c) 可扩展 标记语言 标签<自定义的单词,拼音> 成对出现
d) HTML 预格式标记语言 它被称为网页的源码
- 如何创建一个XML文件
a) <?xml version="1.0" encoding="UTF-8"?>
b) 用于说明XML的版本号和转码方式
c) 常用的转码方式:utf-8 gbk/gb2312 iso-8859-1
d) Utf-8 一个中文 3个字节 gbk 一个中文2个字节 英文字母都只占一个字节
- 如何使用XML文件保存数据
a) Xml文件中有且仅有且必须有一个根节点
4.读写操作的步骤
a) 在读写操作进行前 先为我们的项目导入jar包
- 下载 复制jar包文件进入项目
- 选中jar包文件 右键 build path-->add to build path 变成牛奶瓶 可以使用了
5.代码演示
public class StudentManager {
List<Student> s=new ArrayList<Student>();
//读
public void readTest(){
//创建文件对象
File f=new File("e:\Student.xml");
//将文件对象转换为xml文件对象,会报出文件找不到异常
SAXReader sax=new SAXReader();
try {
//文件对象已经被转换为xml文件对象
Document doc=sax.read(f);
//取xml文件对象中的根节点
Element root=doc.getRootElement();
//将根节点下的子节点放入stu集合中
List<Element> stu=root.elements("Student");
//声明Student对象,如果实例化对象放在循环外会产生集合中所有元素都xml文件的最后一个字节点,放在循环内产生多个冗余变量在栈中占有空间
Student ss;
for (Element element : stu) {
ss=new Student();
//将xml文件对象中的元素一一放入Student对象中,在存入s集合中
ss.setStuName(element.elementText("stuname"));
ss.setStuAge(Integer.parseInt(element.elementText("stuage")));
this.s.add(ss);
}
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//展示
public void show(){
System.out.println("学生姓名 学生年龄");
for (Student student : s) {
System.out.println(student.getStuName()+" "+student.getStuAge());
}
s.clear();
s.add(new Student("科比",33));
}
//写
public void wirteTest(){
//创建文档对象
Document doc =DocumentHelper.createDocument();
//为文档对象创建根节点,并保持根节点
Element root=doc.addElement("Students");
//将s集合中的元素一一取出赋值给文档对象的子节点以及子节点的子节点
for (Student student : s) {
Element son=root.addElement("Student");
son.addElement("stuname").setText(student.getStuName());
son.addElement("stuage").setText(student.getStuAge()+"");
}
try {
//创建河流 并确定好运输的文档内容的目的地 也叫输出流
FileOutputStream out=new FileOutputStream("e:\Student.xml");
//创建对文档格式整理的妹子 输出流格式控制
OutputFormat girl=OutputFormat.createPrettyPrint();
//再搞个运文档内容的汉子 通过河流将妹子带走到目标文件地址
XMLWriter captian=new XMLWriter(out,girl);
//汉子在将文档运到目的地 没你什么事了 滚
captian.write(doc);
//到了目的地 干掉汉子 节省粮食
captian.close();
//汉子和妹子都没有了,则也关闭河流,以免泛滥
out.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}