java对xml的读写
XML:
-
文件的类型声明:
<?xml version="1.0" encoding="UTF-8"?> -
xml的作用:
- 传输数据的格式
- 存储数据
- 做配置文件使用的
-
xml内容:
- 只有一个根节点
- 标签"
- 实体 >> << 空格== ;
- <CDATA[]>内容原样输出,不会做转仪;里面什么内容就什么内容,比如特殊符号。用于注释
xml的读取:
- 使用的dom4j.jar包
-
操作步骤(读)
- 把dom4j导入项目中
- 创建实例
- 寻找到文件
- 获得documentd
- 获得所有内容
- 获得根节点
- 获得根节点下的所有子子节点(这里是个集合)
- 根据名字获得相应节点的的内容
- 读具体操作
<?xml version="1.0" encoding="UTF-8"?>
<list>
<emp empno="1001">
<name>张三</name>
<sex>男</sex>
<age>23</age>
<salary>1000</salary>
</emp>
</list>
public static void main(String[] args) {
//1、创建读取xml文件的类
SAXReader saxReader = new SAXReader();
//2、给定需要读取的文件xml
File file = new File("E:\\ideaPerject\\student\\demo1105\\web\\stuxml.xml");
if (!file.exists()){
// System.exit(0);结束程序
System.out.println("文件不存在");
return;//结束方法
}
try {
//3、read方法的返回值表示的意思是将问价中所有的内容存到一个DOcument对象中
Document doc = saxReader.read(file);
//4、获得所有的元素
Element rootElement = doc.getRootElement();
// System.out.println(rootElement.asXML());
//5、获得跟节点下的所有子节点
//获得根节点下所有的emp子节点
// List elements = rootElement.elements("emp")
List<Element> elements = rootElement.elements();
for (Element e: elements) {
//获得节点上的属性值
String empno = e.attributeValue("empno");
System.out.println("属性值:"+empno);
//6、根据节点获得对应的节点
Element name = e.element("name");
//7、获取节点名
String name1 = name.getName();
//8、获得节点的值
String text = name.getText();
String text1 = name.getTextTrim();
System.out.println(name);
System.out.println(name1);
System.out.println(text);
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
- 写操作
- 创建对象,对象需要传入两个参数,参数一为输出的位子,参数二位输出格式
- 创建空白document
- 创建根节点
- 设置子节点
- 设置子节点里面的标签。addtext是添加文本
- 内容写出。直接调用write(document);
- 具体操作:
public static void main(String[] args) {
try {
//写出格式
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(new File("ha.xml")),format);
//创建一个空白文档
Document document = DocumentHelper.createDocument();
//创建根节点
Element rootElement = document.addElement("list");
//设置子节点
Element emp = rootElement.addElement("emp");
//设置子节点里面的标签。addtext是添加文本
emp.addElement("name").addText("姜明轩");
emp.addElement("sex").addText("男");
emp.addElement("address").addText("毕节");
xmlWriter.write(document);
} catch (IOException e) {
e.printStackTrace();
}
}