XML可扩展标记语言1;我也是小白白,第一次发文章,
2:批处理命令明天更新第二部分
3:可以随时指正我的错误之处,也可以留言提问。我没那么冷漠
- 1作用
- 2: xml文档的组成说明
- 3:约束
- 3.1ddt约束
- 3.2schema 约束
- 4:xml解析
- 4.1 jsoup解析器
- 4.1.1jsoup三种对象
- 4.1.2 document 三个方法
- 4.1.3 element 方法 返回 字符串
2: xml文档的组成说明配置文件:使用框架时,书写配置文件配置相关参数。
传输数据: 网络传输层时,java对象只能是字符串的形式进行传输,所以讲java对象转化位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解析
4.1 jsoup解析器 4.1.1jsoup三种对象解析思想
1:dom对象解析——加内容一次性加载,性格dom树结构
2:sax解析——逐行读取基于驱动,常见在手机中使用。
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);
4.1.2 document 三个方法解析本地文件
statc document pase(file—对象 “编码格式”)
字符串解析不做介绍哈哈
网页源码解析
static document parse(URL—对象,输入一个时间)
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);
4.1.3 element 方法 返回 字符串// 根据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");
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);
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)