1.XMl(EXtensible Markup Language 可扩展标记语言)
- 本质是一种数据的格式,可以用来存储复杂的数据结构,和数据关系
2.XML的特点
- XMl中的“<标签名>”称为一个标签或一个元素,一般是成对出现
- XML中的标签名可以自己定义,但必须要正确的嵌套
- XML中只能有一个根标签
- XML中的标签可以有属性
- 如果一个文件中放置的是XML格式的数据,这个文件就是XML文件
<?xml version="1.0" encoding="UTF-8" ?>
<!-- 注释:以上抬头声明必须放在第一行,必须有 -->
<!-- 根标签只能有一个 -->
<user>
<user id="1">
<name>xyy</name>
<sex>男</sex>
<password>123456</password>
<data> 3 < 2 && 5 > 4</data>
<data1>
<![CDATA[
3 < 2 && 5 > 4
]]>
</data1>
</user>
<user id="2">
<name>myy</name>
<sex>女</sex>
<password>123456</password>
</user>
</user>
3.XML的作用和应用场景
- 本质是一种数据格式,可以存储复杂的数据结构,和数据关系
- 应用场景:做为系统的配置文件
4.解析XML文件
- 使用程序读取XML文件的数据
public static void main(String[] args) throws DocumentException {
//1.创建一个Dom4J框架提供的解析器对象
SAXReader saxReader = new SAXReader();
//2.使用saxReader对象把需要解析的XMl文件读成一个Document对象
Document document =
saxReader.read("D:\\java\\src\\helloWorld.xml");
//3.从文档对象中解析XMl文件的全部数据
Element root = document.getRootElement();
System.out.println(root.getName());
//4.获取根元素下的全部一级子元素
// List<Element> elements = root.elements();
List<Element> elements = root.elements("user");
for (Element element : elements) {
System.out.println(element.getName());
}
//5.获取当前元素下的某个子元素
Element people = root.element("people");
System.out.println(people.getText());
//如果下面有很多子元素user,默认获取第一个
Element user = root.element("user");
System.out.println(user.elementText("name"));
//6.获取元素的属性信息
System.out.println(user.attributeValue("id"));
Attribute id = user.attribute("id");
System.out.println(id.getName());
System.out.println(id.getValue());
List<Attribute> attributes = user.attributes();
for (Attribute attribute : attributes) {
System.out.println(attribute.getName() + "=" + attribute.getValue());
}
//7.如何获取全部的文本内容:获取当前元素下的子元素文本值
System.out.println(user.element("name"));
System.out.println(user.element("password"));
System.out.println(user.element("sex"));
Element data = user.element("data");
System.out.println(data.getText());
System.out.println(data.getTextTrim()); //取出文本去除前后空格
}
5.如何使用程序把数据写到XML文件中去
public static void main(String[] args) {
//1.使用一个StringBuilder对象来拼接XML格式的数据
StringBuilder sb = new StringBuilder();
sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n");
sb.append("<book>\r\n");
sb.append("\t<name>").append("活着").append("<name>\r\n");
sb.append("\t<author>").append("余华").append("<author>\r\n");
sb.append("\t<price>").append("39.99").append("<price>\r\n");
sb.append("<book>");
try (
BufferedWriter bw = new BufferedWriter(new FileWriter("src/book.xml"));
){
bw.write(sb.toString());
} catch (Exception e) {
throw new RuntimeException(e);
}
}
6.什么是约束XML文件的书写
- 就是限制XML文件只能按照某种格式进行书写
约束文档
- 专门用来限制xml书写格式的文档(限制标签、属性应该怎么写)
- 分类:DTD文档、Schema文档