XML配置文件

XML的语法

1.xml是由自定义的标签组成
<开始标签>标签体</结束标签>
<自闭合标签/>

2.xml文件的语法

1)必须要有一个文档声明
<?xml version="1.0" encoding="UTF-8" ?>
	
2)只有一个根标签

3)特殊字符 如< > & 必须使用特殊的比较进行代替
	&lt;	<	小于
    &gt;	>	大于
    &amp;	&	和号
    &apos;	'	单引号
    &quot;	"	引号
    
 4)CDATA区,数据可以被原样显示,不被当做标签解析
    <![CADATA[内容]]>

3.示例

<?xml version="1.0" encoding="utf-8" ?>
<!--本文件用于描述多个学生的信息-->
<!--根标签-->
<students xmlns="http://www.itheima.com"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:schemaLocation="http://www.itheima.com student.xsd">
    <!--第一个学生信息-->
    <student id ="1">
        <name>张三</name>
        <age>23</age>
        <!-->; < ;& ;' ;";有特殊的字符表示
        <info>学生的信息 &lt; &gt; &amp;&apos;&quot;</info>
        <message> <![CDATA[文本内容<< >>]]]> </message>-->
    </student>

    <!--第二个学生信息-->
    <student id ="2">
        <name>李四</name>
        <age>24</age>
    </student>
</students>
XML的解析和约束文档引入

<1>schema约束文档[本质也是一个xml文档]

<?xml version="1.0" encoding="UTF-8" ?>
<!--Xml的约束文档[schema]-->
<!--被约束目标-->
<!--约束目标-->
<!--文件良好-->
<schema xmlns="http://www.w3.org/2001/XMLSchema"
        targetNamespace="http://www.itheima.com"
        elementFormDefault="qualified">
    <!--定义students复杂元素-->
    <element name ="students">
        <complexType>
            <sequence>
                <!--定义student复杂元素-->
                <element name ="student" maxOccurs="unbounded">
                <complexType>
                    <sequence>
                        <!--定义name和age简单元素-->
                        <element name ="name" type="string"></element>
                        <element name ="age" type="int"></element>
                    </sequence>
                    <!--引入简单标签属性required必须的 optional可选的-->
                    <attribute name ="id" type="string" use="required"></attribute>
                </complexType>
            </element>
            </sequence>
        </complexType>
    </element>
</schema>

<2>约束文档引入[xml根标签属性内定义]

<students xmlns="http://www.itheima.com"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:schemaLocation="http://www.itheima.com student.xsd">

<3>XML文档解析
利用dom4j解析文档,需要导入相应的jar包
domr4点击下载

//利用dom4j解析xml文件
public class XmlParse {
    public static void main(String[] args) throws DocumentException {
        //1.获取一个解析器对象[字符流]
        SAXReader saxReader = new SAXReader();
        //2.利用解析器把xml文件加载到内存中,并返回一个文档对象
        Document document = saxReader.read("day17_myXml\\xml\\student.xml");
        //3.获取到根标签
        Element rootElement = document.getRootElement();
        //4.通过根标签来获取student标签
        //elements();可以获取调用者所有的子标签,并以集合的形式返回
        //List list = rootElement.elements();
        //elements("student");可以获取调用者所有指定的子标签,并以集合的形式返回
        List<Element> studentElements = rootElement.elements("student");
        //System.out.println(studentElements.size());
        //5.遍历集合,得到每一个student标签
        ArrayList<Student> list = new ArrayList<Student>();
        for (Element element : studentElements) {
            //element依次表示每一个student标签
            //获取id这个属性对象
            Attribute id = element.attribute("id");
            //获取id的属性值
            String idValue = id.getValue();
            //获取name这个标签对象,再获取标签体[具体文本内容]
            String name = element.element("name").getText();
            //获取age这个标签对象,再获取标签体[具体文本内容]
            String age = element.element("age").getText();
            //每次获取标签值再封装成一个学生对象存入集合中
            list.add(new Student(idValue, name, Integer.parseInt(age)));
        }
        //遍历学生集合
        for (Student student : list) {
            System.out.println(student);
        }
    }
}

打印结果:
------------------------------------------------------
Student{id='1', name='张三', age=23}
Student{id='2', name='李四', age=24}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陪雨岁岁年年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值