zoukankan      html  css  js  c++  java
  • XML相关知识

    XML:eXtensible Markup Language 可扩展标记语言 version="1.0"
    * 可扩展:所有的标签都是自定义的。
    * 功能:数据存储
    * 配置文件
    * 数据传输

    * html与xml区别:
    * html语法松散,xml语法严格
    * html做页面展示,xml做数据存储
    * html所有标签都是预定义的,xml所有标签都是自定义的
    xml语法:


    * 文档声明:
    * 必须写在xml文档的第一行。
    * 写法:<?xml version="1.0" ?>
    * 属性:
    * version:版本号 固定值 1.0
    * encoding:指定文档的码表。默认值为 iso-8859-1
    * standalone:指定文档是否独立 yes 或 no

    * 元素:xml文档中的标签
    ** 文档中必须有且只能有一个根元素
    * 元素需要正确闭合。<body></body> <br/>
    * 元素需要正确嵌套
    * 元素名称要遵守:
    * 元素名称区分大小写
    * 数字不能开头

    * 文本:
    * 转义字符:&gt;
    * CDATA: 里边的数据会原样显示
    * <![CDATA[ 数据内容 ]]>

    * 属性:
    * 属性值必须用引号引起来。单双引号都行
    * 注释:
    <!-- -->
    <?xml-stylesheet type="text/css" href="1.css"?>

    XML解析:
    * 解析xml可以做:
    * 如果xml作为配置文件:读取
    * 如果xml作为传输文件:写,读
    * xml解析思想:
    * DOM:将文档加载进内存,形成一颗dom树(document对象),将文档的各个组成部分封装为一些对象。
    * 优点:因为,在内存中会形成dom树,可以对dom树进行增删改查。
    * 缺点:dom树非常占内存,解析速度慢。

    Document
    Element
    Text
    Attribute
    Comment

    xml 用Dom4j解析

    1.导入jar包 dom4j.jar
    2.创建解析器
    SAXReader reader = new SAXReader();
    3.解析xml 获得document对象
    Document document = reader.read(url);

    配置文件Book.xml

    <?xml version="1.0" encoding="UTF-8"?>

    <书架>
    <书 出版社="黑马程序员">
    <书名>金梅</书名>
    <作者>天涯</作者>
    <单价>10</单价>
    <批发价>20</批发价>
    </书>
    <书>
    <书名>葵花宝典</书名>
    <作者>东方不败</作者>
    <单价>10</单价>
    </书>
    </书架>

    public class TestDom4j {
    @Test// 1、得到某个具体的节点内容:第2本书的书名--》葵花宝典
    public void test1() throws DocumentException{
    SAXReader reader = new SAXReader();//创建一个xml解析对象
    Document document = reader.read("src/Book.xml");//把xml文档加载到document对象中
    Element root = document.getRootElement();
    List list = root.elements();//得到当前节点的所有子节点
    Element secondBook = (Element) list.get(1);//得到第二本书对象
    String name = secondBook.element("书名").getText();//得到当前节点的文本内容
    System.out.println(name);
    }

    @Test // 2、遍历所有元素节点
    public void test2() throws DocumentException{
    SAXReader reader = new SAXReader();//创建一个xml解析对象
    Document document = reader.read("src/Book.xml");//把xml文档加载到document对象中
    Element root = document.getRootElement();
    treeWalk(root);
    }

    private void treeWalk(Element ele) {
    System.out.println(ele.getName());//输出当前节点的名子
    for (int i = 0; i < ele.nodeCount(); i++) {//ele.nodeCount()得到当前节点的所有子节点的数量
    Node node = ele.node(i);//取出下标为i的节点
    if(node instanceof Element){//判断当前节点是否为标签
    treeWalk((Element)node);//把node强转为标签(Element)
    }else{
    System.out.println(node.getText());
    }
    }
    }

    }

    解析XML

    * XPATH:专门用于查询
    * 定义了一种规则。
    * 使用的方法:
    * selectSingleNode():
    * selectNodes():
    使用步骤:
    1、注意:要导包 jaxen...jar
    2、创建解析器
    SAXReader reader = new SAXReader();
    3、解析xml 获得document对象
    Document document = reader.read(url);

    // 1、得到某个具体的节点内容:第2本书的书名--
    // 2、遍历所有元素节点

    public class TestXPath {
    @Test
    public void test() throws Exception{
    SAXReader read = new SAXReader();
    Document document = read.read("src/Book.xml");
    Node node = document.selectSingleNode("/书架/书[2]/书名");
    System.out.println(node.getText());
    }

    @Test
    public void test2() throws Exception{
    SAXReader read = new SAXReader();
    Document document = read.read("src/Book.xml");
    List list = document.selectNodes("//*");
    for (int i = 0; i < list.size(); i++) {
    Node node = (Node)list.get(i);
    System.out.println(node.getName()+" "+node.getText());
    }
    }
    }

    获取book 下所有的title

    public class TestXPath {
    @Test
    public void test1() throws Exception{
    SAXReader read = new SAXReader();
    Document document = read.read("src/Dom4jTest.xml");
    List nodes = document.selectNodes("/bookstore//book/title");
    for (int i = 0; i < nodes.size(); i++) {
    Node node = (Node) nodes.get(i);
    System.out.println(node.getText());
    }
    }
    }




  • 相关阅读:
    如何成为技术牛人
    重新思考关系型数据库的设计
    架构与管理相通
    传统企业和互联网企业的不同软件价值观
    数据仓库生命周期模型
    用面向对象的思维方式来设计数据库
    数据仓库的几类事实表
    转腾讯产品总监的一篇博文
    开源大数据处理平台简史
    [kuangbin带你飞]专题六 最小生成树 J
  • 原文地址:https://www.cnblogs.com/lixiaowei395659729/p/7183836.html
Copyright © 2011-2022 走看看