【xml 语句】

【xml 语句】,第1张

1;我也是小白白,第一次发文章,
2:批处理命令明天更新第二部分
3:可以随时指正我的错误之处,也可以留言提问。我没那么冷漠

XML可扩展标记语言
    • 1作用
    • 2: xml文档的组成说明
    • 3:约束
      • 3.1ddt约束
      • 3.2schema 约束
    • 4:xml解析
      • 4.1 jsoup解析器
        • 4.1.1jsoup三种对象
        • 4.1.2 document 三个方法
        • 4.1.3 element 方法 返回 字符串

1作用

配置文件:使用框架时,书写配置文件配置相关参数。
传输数据: 网络传输层时,java对象只能是字符串的形式进行传输,所以讲java对象转化位xml字符串

2: xml文档的组成说明

1:文档声明— 放在第一行格式为

2:标签可以自定义—必须是英文字母,数字,符号不能以数字开头
3:属性必须用 ‘ ’ ,“ ” 括号括起来
4:文本想要原文显示必须添加 —CDATA(字符数据区域)区


<students>
	<student>
		<name>喜羊羊name>
		<study id="001">1study>
	student>
students>
3:约束 3.1ddt约束

俩种约束—DDT约束,Schema约束


ddt 约束—
本地:
网络::
以下是代码实例

ddt约束文档
<!ELEMENT students (student*) >
<!ELEMENT student (name,age,sex)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ATTLIST student number ID #REQUIRED>

根据文档写的代码实例

DOCTYPE students SYSTEM "student.dtd">
<students>
    <student number="lqan001">
        <name>
        刘安
        name>
        <age>
           18
        age>
        <sex>
            女生
        sex>
    student>
 students>   

3.2schema 约束

确定版本 < xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
引入文件< xsi:schemaLocation="http://www.itbaizhan.cn/xml student.xsd">文件定义的空间以及具体路径
为约束的标签声明前缀< xmlns:a="http://www.itbaizhan.cn/xml"文件定义的命名空间>



<xsd:schema xmlns="http://www.itbaizhan.cn/xml"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        targetNamespace="http://www.itbaizhan.cn/xml" elementFormDefault="qualified">
    <xsd:element name="students" type="studentsType"/>
    <xsd:complexType name="studentsType">
        <xsd:sequence>
            <xsd:element name="student" type="studentType" minOccurs="0" maxOccurs="unbounded"/>
        xsd:sequence>
    xsd:complexType>

    <xsd:complexType name="studentType">
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string"/>
            <xsd:element name="age" type="ageType" />
            <xsd:element name="sex" type="sexType" />
        xsd:sequence>
        <xsd:attribute name="number" type="numberType" use="required"/>
    xsd:complexType>
    <xsd:simpleType name="sexType">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="male"/>
            <xsd:enumeration value="female"/>
        xsd:restriction>
    xsd:simpleType>
    <xsd:simpleType name="ageType">
        <xsd:restriction base="xsd:integer">
            <xsd:minInclusive value="0"/>
            <xsd:maxInclusive value="256"/>
        xsd:restriction>
    xsd:simpleType>
    <xsd:simpleType name="numberType">
        <xsd:restriction base="xsd:string">
            <xsd:pattern value="baizhan_\d{4}"/>
        xsd:restriction>
    xsd:simpleType>
xsd:schema> 


<students
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.itbaizhan.cn/xml student.xsd"
        xmlns="http://www.itbaizhan.cn/xml">
    <student number="baizhan_0001">
        <name>xiyangyangname>
        <age>10age>
        <sex>malesex>
    student>
    <student number="baizhan_0002">
        <name>meiyangyangname>
        <age>8age>
        <sex>femalesex>
    student>
students>
4:xml解析

解析思想
1:dom对象解析——加内容一次性加载,性格dom树结构
2:sax解析——逐行读取基于驱动,常见在手机中使用。

4.1 jsoup解析器 4.1.1jsoup三种对象

jsoup
解析xml或者html 形成dom树

import org.jsoup.Jsoup;

import org.jsoup.nodes.Document;
import java.io.File;
import java.io.IOException;

//测试jsoup 三种解析方式。第一种
public class demo01 {
    public static void main(String[] args) throws IOException {
        //解析本地xml文件需要类加载器
        String path=demo01.class.getClassLoader().getResource("xml/student.xml").getPath();
        //返回一个document对象 不需要转型哈哈
        Document document = Jsoup.parse(new File(path),"utf-8");
        System.out.println(document);

    }
}
//解析字符串太简单。
//解析网络资源
 Document document2 = Jsoup.parse(new URL("https://www.baidu.com"), 10000);
        System.out.println(document2);

解析本地文件
statc document pase(file—对象 “编码格式”)
字符串解析不做介绍哈哈
网页源码解析
static document parse(URL—对象,输入一个时间)

4.1.2 document 三个方法

     String path = Demo2.class.getClassLoader().getResource("com/baizhan/xml/jsoup/student.xml").getPath();
        Document document = Jsoup.parse(new File(path), "utf-8");

        // 根据id获取元素
        Element element1 = document.getElementById("a1");
        System.out.println(element1.text());
        System.out.println("-----------------------");
        // 根据标签获取元素
        Elements elements = document.getElementsByTag("age");
        for (Element element : elements) {
            System.out.println(element.text());
        }
        System.out.println("-----------------------");

        // 根据属性获取元素
        Elements elements1 = document.getElementsByAttribute("number");
        for (Element element : elements1) {
            System.out.println(element);
        }
        System.out.println("--------------------");
        // 根据属性名=属性值获取元素
        Elements elements2 = document.getElementsByAttributeValue("number", "baizhan_0001");
        for (Element element : elements2) {
            System.out.println(element);
        }
        System.out.println("------------------------");
        // 使用css选择器获取元素
        Elements elements3 = document.select("#a1");
        System.out.println(elements3);

// 根据id获取元素
Element element1 = document.getElementById("a1");
// 根据标签获取元素—这个是elements
Elements elements = document.getElementsByTag("age");
// 根据属性获取元素
Elements elements1 = document.getElementsByAttribute("number");
// 根据属性名=属性值获取元素
Elements elements2 = document.getElementsByAttributeValue("number", "baizhan_0001");
// 使用css选择器获取元素
Elements elements3 = document.select("#a1");

4.1.3 element 方法 返回 字符串

Strng text() 纯文本
String html () 获取带有标签的文本
String arr() 获取元素的属性值


### 4.2 Xpath解析

1:作为xml 的路径语言,确定文档中某部分某位置的语言。
2:代码示例

  //将Document对象转为JXDocument对象
        JXDocument jxDocument = new JXDocument(document);
       // 4.JXDocument调用selN(String xpath),获取List对象。
   List<JXNode> jxNodes = jxDocument.selN("//name");
        List<JXNode> jxNodes = jxDocument.selN("//student[@number='baizhan_0002']");
        // 想拿到baizhan_0001的年龄
        List<JXNode> jxNodes = jxDocument.selN("//student[@number='baizhan_0001']/age");
  //      5.遍历List,调用JXNode的getElement(),转为Element对象。
        for (JXNode jxNode : jxNodes) {
            Element element = jxNode.getElement();
  //          6.处理Element对象。
            System.out.println(element);
        }
    }

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/730932.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-27
下一篇 2022-04-27

发表评论

登录后才能评论

评论列表(0条)

保存