关闭页面特效

XML技术

1|0XML


1|1概念


可扩展标记语言

1|2用途


配置文件

使用框架时需要写配置文件

传输数据

在网络中传输数据时并不能传输JAVA对象,所以我们需要将JAVA对象转成字符串传输,其中一种方式就是将对象转为 XML 类型的字符串

1|3xml和html区别


xml语法严格,html语法松散

xml标签自定义,html标签预定义

1|4XML基本语法


文件后缀名是xm第一行必须是文档声明 <?xml version="1.0"?> 有且仅有一个根标签 <students> </students> 属性值必须用引号 (单双都可) 引起来 标签必须正确关闭 标签名区分大小写

1|5XML组成部分


文档声明

#### 属性列表 version:版本号(必须) encoding:编码方式 ### 标签 XML中标签是自定义的,标签名要求 - 包含数字,字幕,其他字符 - 不呢个以数字和标点符号开头 - 不能包含空格 ### 指令 指令是结合 css 使用的,但现在XML 一般不结合 CSS,语法为: ```xml
### 属性 属性值必须用引号 (单双都可)引起来 ### 文本 如果想原样展示文本,需要设置CDATA区,格式为:
## 约束 ### 概念 约束是一个文件,可以规定 xml 文档的书写规则。我们作为框架的使用者,不需要会写约束文件,只要能够在 xml中引入约束文档,简单的读懂约束文档即可。XML 有两种约束文件类型: DTDSchema ### DTD约束 #### 引入 ```xml 本地:<!DOCTYPE 根标签名 SYSTEM "dtd 文件的位置"> 网络:<!DOCTYPE 根标签名 PUBLIC "dtd 文件的位置">
<!ELEMENT students (student*)!ELEMENTstudent (name, age, sex)> <!--根节点,可以按顺序放name,age,sex节点--> <!ELEMENT name (#PCDATA)> <!--子节点,内容为文本类型--> <!ELEMENT age(#PCDATA)> <!ELEMENT sex:(#PCDATA)> <!ATTLIST student number ID #REQUIRED> <!--子节点student,属性可以有ID类型的number属性 必须的不能为空-->
<?xml version="1.0"?> <!DOCTYPE students SYSTEM "student.dtd"> <students> <student number="baizhan001"> <name>喜洋洋</name> <age>10</age> <sex></sex> </student> <student number="baizhan002"> <name>美羊羊</name> <age>8</age> <sex></sex> </student> </students>

Schema约束

引入

DTD全名Document Type Definition,文档类型定义 XSD全称是XML Schema DefinitionXML Schema 定义 xmlns全称xmlnsweb.xml文件用到的命名空间 xsi全称xml schema instanceweb.xml遵守xml规范 xsi:schemaLocation是指具体用到的schema资源 引入 (1)写xml文档的根标签 <?xml version="1.0"?> (2) 引入xsi前缀:确定 Schema 文件的版本 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" (3) 引入Schema 文件 xsi:schemaLocation="Schema 文件定义的命名空间 Schema文件的具体路径 (4)为 Schema 约束的标签声明前缀 xmlns:前缀="Schema 文件定义的命名空间" <a:students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.yxh.cn/xml student.xsd" xmlns:a="http://www.yxh.cn/xml" > </a:students>

约束图解

img

img

1|6XML解析


XML解析即读写XML文档中的数据。框架的开发者通过 XML解析读取框架使用者配的参数信息,开发者也可以通过 XML解析读取网络传来的数据

XML解析思想

DOM

将标记语言文档一次性加载进内存,在内存中形成一棵dom树

优点:操作方便,可以对文档进行CRUD的所有操作

缺点:占内存

SAX

逐行读取,基于事件驱动的。

优点:不占内存,一般用于手机APP开发中读取XML

缺点 :只能读取,不能增删改

常见解析器

JAXP

SUN公司提供的解析器 ,支持DOM和SAX两种思想

DOM4J

主要支持 DOM

Jsoup

是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的API,可通过 DOM,CSS 以及类似于jQuery 的操作方法来取出和操作数据

PULL

Android操作系统内置的解析器,支持SAX思想

Jsoup使用步骤

导入jar包

ClassLoader classLoader=Demo1.class.getClassLoader(); //利用类加载器通过文件相对路径找到绝对路径 String path = classLoader.getResource("com/yxh/xml/xsd/student.xml").getPath(); //加载入内存,解析成Dom树对象 Document document = Jsoup.parse(new File(path),"utf-8"); //获取标签对应的Element对象 Elements name =document.getElementByTag("name"); //获取对象 for(Element element:name){ String text = element.text(); System.out.println(text); }

常用对象

Jsoup

解析xml或html,形成dom树对象

常用方法:

static Document parse(File in, String charsetName): 解析本地文件 static Document parse(String html): 解析htmlxml字符串 static Document parse(URL url,int timeoutMillis): 解析网页源文件

Document:xml的dom树对象

常用方法 Element getElementByld(String id): 根据id 获取元素 Elements getElementsByTag(String tagName): 根据标签名获取元素 Elements getElementsByAttribute(String key): 根据属性获取元素 Elements getElementsByAttributeValue(String key,String value): 根据属性名=属性值获取元素。 Elements select(Sting cssQuery): 根据选择器选取元素

Element: 元素对象

常用方法

String text(): 获取元素包含的纯文本 String html:获取元素包含的带标签的文本。 String attr(String attributeKey): 获取元素的属性值。

XPath解析

使用方法 //1.导入Xpath的jar包 //2.获取 Document 对象 ClassLoader classLoader=Demo1.class.getClassLoader(); //利用类加载器通过文件相对路径找到绝对路径 String path = classLoader.getResource("com/yxh/xml/xsd/student.xml").getPath(); //加载入内存,解析成Dom树对象 Document document = Jsoup.parse(new File(path),"utf-8"); //3.将Document 对象转为JXDocument 对象 JXDocument jxDocument = new JXDocument(document); // 4.JXDocument调用 selN(String xpath),获取 List<JXNode>对象。 List<JXNode> jxNodes=jxDocument.selN("//name"); //5.遍历 List<JXNode>,调用JXNode的getElement(),转为 Element 对象。 for(JXNode jxNodejxNodes){ Element ele = jxNode.getElement(); //6.处理 Element 对象 System.out.println(element.text()); }

img

使用 Jsoup 完成网页爬虫

网络爬虫 (web crawler) : 自动抓取互联网信息的程序。
Jsoup 可以通过 URL 获取网页的 HTML 源文件,源文件中包含着网站数据,我们可以解 HTML 源文件的数据来获取我们需要的信息

//1. 引入jar 包。 //2.使用Jsoup 获取网页 HTML 源文件,转为 Document 对象 Jsoup.parse(new URL("http://daily.zhihu.com/story/9734946"),3000); //3.通过 Document 对象,获取需要的 Element 对象 //获取头图.标题 .作者.正文 Elements headerImg = document.getElementByAttributeValue("alt","头图"); Elements headEle = document.select(".DailyHeader-title"); Elements authorEle = document.select(".author"); Elements contentEle = document.select(".content"); //4.获取 Element 对象的数据 String header = headerImg.get(0).attr("src"); String head = headEle.text(); String author = authorEle.text(); String content = contentEle.text(); //5.设置循环自动爬取

使用XML配置爬虫程序的参数

爬虫程序有一些参数需要配置,如果直接将参数写在JAVA 程序中,则修改参数非常不方便,所以此时我们将参数写在 XML配置文件中,通过解析 XML文件获取参数的配置信息

<?xml version="1.0"?> <Crawler> <min>111</min> <max>999</max> </Crawler>

__EOF__

作  者YXH
出  处https://www.cnblogs.com/YxinHaaa/p/17397749.html
关于博主:编程路上的小学生,热爱技术,喜欢专研。评论和私信会在第一时间回复。或者直接私信我。
版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!

posted @   YxinHaaa  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
0
0
关注
跳至底部
点击右上角即可分享
微信分享提示