什么是XML
- XML 指可扩展标记语言(EXtensible Markup Language)
- XML 是一种标记语言,很类似 HTML
- XML 的设计宗旨是传输数据,而非显示数据
- XML 标签没有被预定义。您需要自行定义标签。
xml 的功能:
1、作为框架的配置文件
2、方便在网络中传输数据
xml 和 html的区别:
1、xml的标签都是自定义的,html的标签是预定义
2、xml的语法比html严谨
3、xml是用于存储数据的,html是展示数据的
基本语法:
1、文件以.xml结尾
2、xml的文件第一行,必须是文档声明(固定的)
3、xml中只能有一个根标签
4、属性的值需要用引号引起来
5、所有的标签必须正常关闭
6、xml区分大小写
例如:描述一个人
<person id="1">
    <name>coco</name>
    <age>12</age>
</person>
xml的解析:
   解析方式:
      sax:一行一行解析
      dom:一次性将文档的内容加载到内存中,形成dom树
  解析技术:
      JAXP,JDom,jSoup(html),dom4j
  例如:
dom4j:
  xml 文件:
    <?xml version="1.0" encoding="utf-8"?>
         <person id="p">
             <name>coco</name>
             <age>12</age>
         </person>
  解析:
@Test
public void test1() throws DocumentException {
    // 1、创建解析对象
    SAXReader reader = new SAXReader();
    // 2、创建文件
    File file = new File("person");
    // 3、将文件读取到内存中形成 dom 树
    Document document = reader.read(file);
    // 4、获取根节点
    Element rootElement = document.getRootElement();
    // 获取名字
    System.out.println(rootElement.getName());
    // 获取内容
    System.out.println(rootElement.getText());
    // 获取所有的子节点
    List<Element> list = rootElement.elements();
    for (Element e:list) {
        System.out.println(e.getName()+"-------"+e.getText());
    }
    // 根据名字获取子节点
    Element name = rootElement.element("name");
    System.out.println(name.getText());
    // 根据属性名,获取属性对象
    Attribute id = rootElement.attribute("id");
    System.out.println(id.getName());
    System.out.println(id.getText());
}
jSoup(html)
   解析:
@Test
public void test2() throws IOException {
    // 1、创建解析对象
    // 2、创建文件
    // 3、将文件读取到内存中形成 dom 树
    // 将前面 三步 合成一个方法
    Document document = Jsoup.parse(new File("person"), "utf-8");
    Element element = document.getElementById("p");
    // 获取带格式的文本
    System.out.println(element.html());
    // 获取纯文本
    System.out.println(element.text());
}