XML语言简介和语法介绍

XML是一种用于标记数据的语言,常用于组织和存储数据,如配置文件和数据传输。它具有严格的结构,包括声明、元素、属性等部分,且支持注释和CDATA。XML文件可以被解析库如JDK的org.w3c解析,用于程序中读取和处理数据。
摘要由CSDN通过智能技术生成

XML语言简介

可拓展标记语言;是SGML的子集,可以描述很复杂的数据关系

用途

用于组织和存储数据,除此之外都和XML本身无关

  1. 配置文件(例子:Tomcat的web.xml,server.xml…),XML能够非常清晰描述出程序之间的关系
  2. 程序间数据的传输,XML的格式是通用的,能够减少交换数据时的复杂
  3. 充当小型数据库,如果我们的数据有时候需要人工配置的,那么XML充当小型的数据库是个不错的选择,程序直接读取XML文件显然要比读取数据库要快

各部分注解

<?xml version="1.0" encoding="UTF-8" ?> //头部申明
<outer> //根节点
  <name>S</name>//子标签
  <desc>HAHAH</desc>
	<inner type="1"> //可以存放属性
    <age>10</age>
    <sex></sex>
  </inner>
</outer>

HTML主要用于通过编排来展示数据,而XML主要是存放数据,它更像是一个配置文件!当然,浏览器也是可以直接打开XML文件的

一个XML文件存在以下的格式规范:

  1. 必须存在一个根节点,将所有的子标签全部包含。
  2. 可以但不必须包含一个头部声明(主要是可以设定编码格式)
  3. 所有的标签必须成对出现,可以嵌套但不能交叉嵌套
  4. 区分大小写。
  5. 标签中可以存在属性,比如上面的type="1"就是inner标签的一个属性,属性的值由单引号或双引号包括。
声明
<?xml version="1.0" encoding="UTF-8" standalone="no"?> //头部申明

version :版本

encoding:编码;

standalone:独立使用;默认是no。standalone表示该xml是不是独立的,如果是yes,则表示这个XML文档时独立的,不能引用外部的DTD规范文件;

元素

在XML当中元素和标签指的是一个东西

元素中需要值得注意的地方:

  1. XML元素中的出现的空格和换行都会被当做元素内容进行处理
  2. 每个XML文档必须有且只有一个根元素
  3. 元素必须闭合
  4. 大小写敏感
  5. 不能交叉嵌套
  6. 不能以数字开头
属性

命名规范和XML一致

	<!--属性名是name,属性值是china-->
	<中国 name="china">

	</中国>
注释

XML文件也可以使用注释:

<?xml version="1.0" encoding="UTF-8" ?>
<!-- 注释内容 -->
CDATA

通俗的来讲,就是那有些内容的特殊含义改成就单纯字面意思,这种情况,就需要把这些区都放在CDATA区

<test>
    <name><![CDATA[我看你<><><>是一点都不懂哦>>>]]></name>
</test>
转义字符

转义字符

JDK为我们内置了一个叫做org.w3c的XML解析库,我们来看看如何使用它来进行XML文件内容解析:

    public static void main(String[] args) {
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); //创建对象
        try {
            DocumentBuilder db = dbFactory.newDocumentBuilder(); //创建对象
            Document doc = db.parse("file:test.xml");
            //每一个标签作为一个节点
            NodeList list = doc.getElementsByTagName("outer"); //可能有挺多text
            Node root = list.item(0); //获取第一个

            NodeList childs = root.getChildNodes(); //一个节点下可以有很多结点,节点可以是一个带有内容的标签,也可以是一段文本

            for (int i = 0; i < childs.getLength(); i++) {
                Node child = childs.item(i);
                if(child.getNodeType() == Node.ELEMENT_NODE) { //过滤换行符
                    // 输出节点名称,也就是标签名称,以及标签内部的文本(内部的内容都是子节点,所以要获取内部的节点)
                    System.out.println(child.getNodeName() + ";" + child.getFirstChild().getNodeValue());
                }

            }
        }catch(Exception e) {
            e.printStackTrace();
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值