Java中的配置文件之XML以及DTD约束

6 篇文章 0 订阅
本文介绍了XML的基本概念、语法要点,重点讲解了dom4j解析技术,并探讨了XML约束(DTD和XSD),以及如何在IntelliJ IDEA中设置DTD支持。通过实例演示,了解如何在Java中读取和验证XML文件。
摘要由CSDN通过智能技术生成

目录

XML

1.XML基本概述

2.XML常用基本语法

3.XML的解析

        dom4j使用

XML约束

XML引入(Idea)


XML

1.XML基本概述

  • XML最初是用来给前后端传输数据使用的,现在主要用于作为java的配置文件
  • XML的语法与HTML的语法十分相似,但要注意的一点是:XML没有预制的标签,所有标签都是用户自定义的

2.XML常用基本语法

  • 创建XML文件时一定要在文件行首使用定义语句<? XML   version="1.0"  encoding="UTF-8" ?>
  • XML的标签必须要有开标签关标签(类比HTML语法)如:开标签: <books> 关标签:</books>
  • XML的标签对大小写敏感,如<book>和<Book>
  • XML文件必须要有根标签 ,类比html中的<html></html>标签
  • XML属性值必须要有引号 ,与html语法相同

3.XML的解析

        常见解析方式有:dom ,sax ,pull ,dom4j

dom4j为框架常用的解析方式,这里就只对dom4j的使用做说明

XML示例文件

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

<books>
    <book>
        <name>如何成为世界首富</name>
        <price>9.99</price>
        <author>尼古拉斯凯奇</author>
    </book>
    <book>
        <name>校花的贴身高手</name>
        <price>8888.88</price>
        <author>唐家十少</author>
    </book>
</books>

        dom4j使用

                

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;


import javax.swing.plaf.synth.SynthOptionPaneUI;
import java.io.InputStream;
import java.util.List;

/**
 * author: -别看了-
 * 2022/03/19
 */
public class mainTest {
    @Test
    public void test() throws DocumentException {
        //读取配置文件
        InputStream is = getClass().getResourceAsStream("/myConfig01.xml");
        //创建SAXReader对象用于读取输入流
        SAXReader saxReader = new SAXReader();
        //读取输入流会返回一个document对象
        Document doc = saxReader.read(is);
        //获取根标签
        Element rootElement = doc.getRootElement();
        //获取指定的子标签
        List<Element> elements = rootElement.elements("book");
         elements.forEach ( bookEle -> {
             //获取子标签属性值
             String bookID = bookEle.attributeValue("bid");

             //获取子标签的子标签
             Element nameEle = bookEle.element("name");
             Element priceEle = bookEle.element("price");
             Element authorEle = bookEle.element("author");

             //获取标签文本内容
             String name = nameEle.getText();
             String price = priceEle.getText();
             String author = authorEle.getText();

             System.out.println("name: " + name +" price: "+price+" author: "+author);
         });
    }
}

XML约束

        常见约束有 : dtd约束xsd约束

这里详细讲解dtd约束

创建一个xmlDTD.dtd文件

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

<!ELEMENT books (book+)> <!--这里设置了标签books可以有一个或多个book子标签,至少一个-->

<!ELEMENT book (name,price,author)>  <!--这里设置了book里可以有name,price,author子标签-->

<!ELEMENT name (#PCDATA)> <!--这里设置了name标签的文本为普通文本-->
<!ELEMENT price (#PCDATA)>
<!ELEMENT author (#PCDATA)>


<!--
1. 这里的ATTLIST指的是属性列表,
2. 设置了books的属性可以有bid属性,并且规定了bid属性是ID属性(即具有唯一性)
3. #REQUIRED规定了bid是必须要填的属性 
-->
<!ATTLIST book bid ID #REQUTRED>  

XML引入(Idea)

点击File-->Settings  --> 点击Language&Frameworks --> Schemas and DTDs

 

 

 操作成功后,回到刚刚编辑的XML文件

 <!DOCTYPE books>规定了当前xml文件的根标签<books></books>

SYSTEM意为在内网中该dtd约束通用(也可以选择PUBLIC模式,意为该dtd约束为公共适用的),以url引入dtd文件,url为刚刚输入的url。

*XML文件要按照dtd文件约束来输入,不然会报错,自己回去可以改一下bid或者添加dtd定义外的子标签试一试。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值