xml

本贴最后更新于 2495 天前,其中的信息可能已经斗转星移

fee3fbfa294f42158df06452be7d6b50-image.png


1.xml
1.1xml 概念
可扩展的标签语言,标签自定义,作用:存储数据.(基本用于配置文件)
xml 常作为配置文件,里面存放了一些全限类名。通过解析 xml 和反射可以把这些类和类的方法加载。这便是学习本节内容的核心。当然初次之外还可以加载一些属性的值,用作参数传递。

1.2 书写规范
1.区分大小写
2.应该有一个根标签
3.标签必须关闭


4.属性必须用引号引起来,且是 key="value"形式

5.标签体中的空格或者换行或者制表符等内容都是作为数据内容存在的
aa
aa 这 2 种写法不一样
6.特殊字符必须转义
< > &
满足上面规范的文件我们称之为是一个格式良好的 xml 文件.可以通过浏览器浏览。后缀名: *.xml

1.3xml 组成部分:
1.3.1 声明
作用:告诉别人我是一个 xml 文件
格式:
例如: 版本目前暂时 1.0
要求: 必须在 xml 文件的第一行,必须顶格写

1.3.2 元素(标签)
格式:

要求:1.必须关闭
2.标签名不能 xml Xml XML 等等开头
3.标签名中不能出现" "或者":"等特殊字符.

1.3.3 属性
格式: <xx 属性名="属性值"/>
要求: 属性必须用引号引起来

1.3.4 注释:
和 html 一样

1.3.5 CDATA:
xml 文件的特殊字符必须转义,通过 cdataky 保证数据原样输出,无需再使用转义。
格式: 原样输出的内容

1.4xml 解析:
1.4.1 解析方式
1.sax:特点:逐行解析,只能查询.
2.dom:特点:一次性将文档加载到内容中,形成一个 dom 树.可以对 dom 树 curd 操作

1.4.2 解析技术
JAXP:sun 公司提供支持 DOM 和 SAX 开发包
JDom:dom4j 兄弟
jsoup:一种处理 HTML 特定解析开发包
★dom4j:比较常用的解析开发包,hibernate 底层采用。

1.4.3dom4j
解析原理:Xml 解析器一次性把整个 xml 文档加载进内存,然后在内存中构建一颗 Document 的对象树,通过 Document 对象,得到树上的节点对象,通过节点对象访问(操作)到 xml 文档的内容。
使用步骤:
1.导入 jar 包
2.创建一个核心对象 SAXReader
new SAXReader();
3.将 xml 文档加载到内存中形成一棵树
Document doc=reader.read(文件) 文件路径\转义\
4.获取根节点 导包 dom4j 的包
Element root=doc.getRootElement();
5.通过根节点就可以获取其他节点(文本节点,属性节点,元素节点)
获取所有的子元素
List list=root.elements()
获取元素的指定属性内容
String value=root.attributeValue("属性名");
获取子标签标签体:遍历 list 获取到每一个子元素
String text=ele.elementText("子标签名称")

1.4.4xpath 解析技术
指哪打哪的 dom4j 的扩展版,依赖于 dom4j。
使用步骤:
1.导入 jar 包(dom4j 和 jaxen-1.1-beta-6.jar)
2.加载 xml 文件到内存中
3.使用 api
selectNode("表达式");
selectSingleNode("表达式");
表达式的写法:
/ 从根节点选取
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置
例如一个标签下有一个 id 属性且有值 id=2;
//元素名[@ 属性名='属性值']
//元素名[@id='2']

1.5 反射:
反射步骤:
1.获取对应的 class 对象
方式 1:★Class clazz=Class.forName("全限定名");
方式 2:Class clazz=类名.class;
方式 3:Class clazz==对象.getClass();
2.通过 class 对象创建一个实例对象(相当于 new 类())
Object clazz.newInstance();
3.通过 class 对象获取一个方法(public 修饰的)
Method method=clazz.getMethod("方法名",Class .... paramType); paramType 为参数的类型
4.让方法执行: method.invoke(Object 实例对象,Object ... 参数);
Object 实例对象:以前调用方法的对象,现在 clazz.newInstance()的对象。
Object ... 参数:该方法运行时需要的参数

1.6xml 约束:
作用:规定 xml 中可以出现那些元素及那些属性,以及他们出现的顺序.
约束的分类:
DTD 约束:struts hiebernate 等等
SCHEMA 约束:tomcat spring 等等

1.6.1DTD 约束:
1.6.1.1 和 xml 的关联 (一般都会提供好,复制过来即可,有时候连复制都不需要.)
方式 1:内部关联 格式:
方式 2:外部关联-系统关联 格式:
例如:
方式 3:外部关联-公共关联 格式:

1.6.1.2Dtd 语法
元素:<!Element 元素名称 数据类型 | 包含内容 >
数据类型:#PCDATA:普通文本 使用的时候一般用()引起来
包含内容:该元素下可以出现那些元素 用()引起来
符号:*出现任意次 ?出现 1 次或者 0 次 + 出现至少 1 次 | 或者 ()分组 , 顺序
属性:格式:
属性类型: ID:唯一 CDATA:普通文本
属性是否必须出现 REQUIRED:必须出现 IMPLIED:可以不出现
一个 xml 文档中只能添加一个 DTD 约束
xml 的学习目标:编写一个简单的 xml 文件可以根据约束文件写出相应 xml 文件.按 f2 或者 alt+/提示写出内容即可

1.6.2SCHEMA 约束
一个 xml 文档中可以添加多个 schema 约束
xml 和 schema 的关联
格式: < 根标签 xmlns="..." ...>
< 根标签 xmlns:别名="..." ...>
ns(nameSpace)名称空间:关联约束文件、规定元素是来源于那个约束文件的。
注意:schema 约束本身也是 xml 文件.

例如:
一个约束文件中规定 table(表格) 表格有属性 row 和 col
还有一个约束文件规定 table(桌子) 桌子有属性 width 和 height
在同一个 xml 中万一我把两个约束文件都导入了,在 xml 中我写一个 table,这个 table 有什么属性????
我们为了避免这种情况的发生,可以给其中的一个约束起个别名
使用的时候若是没有加别名那就代表是来自于没有别名的约束文件
例如 table(表格) 给他起个别名 xmlns:a="..."
在案例中使用 a:table 代表的是表格
若在案例中直接使用 table 代表的是桌子
在一个 xml 文件中只能有一个不起别名;
2bfe4e62e15b4a21a6909cc9e5b893c5-image.png

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3169 引用 • 8208 回帖

相关帖子

回帖
xml

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • 锤子科技

    锤子科技(Smartisan)成立于 2012 年 5 月,是一家制造移动互联网终端设备的公司,公司的使命是用完美主义的工匠精神,打造用户体验一流的数码消费类产品(智能手机为主),改善人们的生活质量。

    4 引用 • 31 回帖 • 7 关注
  • 周末

    星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。

    14 引用 • 297 回帖
  • 京东

    京东是中国最大的自营式电商企业,2015 年第一季度在中国自营式 B2C 电商市场的占有率为 56.3%。2014 年 5 月,京东在美国纳斯达克证券交易所正式挂牌上市(股票代码:JD),是中国第一个成功赴美上市的大型综合型电商平台,与腾讯、百度等中国互联网巨头共同跻身全球前十大互联网公司排行榜。

    14 引用 • 102 回帖 • 401 关注
  • jsoup

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

    6 引用 • 1 回帖 • 473 关注
  • frp

    frp 是一个可用于内网穿透的高性能的反向代理应用,支持 TCP、UDP、 HTTP 和 HTTPS 协议。

    16 引用 • 7 回帖 • 2 关注
  • 旅游

    希望你我能在旅途中找到人生的下一站。

    86 引用 • 897 回帖 • 1 关注
  • QQ

    1999 年 2 月腾讯正式推出“腾讯 QQ”,在线用户由 1999 年的 2 人(马化腾和张志东)到现在已经发展到上亿用户了,在线人数超过一亿,是目前使用最广泛的聊天软件之一。

    45 引用 • 557 回帖 • 160 关注
  • 996
    13 引用 • 200 回帖 • 5 关注
  • Gzip

    gzip (GNU zip)是 GNU 自由软件的文件压缩程序。我们在 Linux 中经常会用到后缀为 .gz 的文件,它们就是 Gzip 格式的。现今已经成为互联网上使用非常普遍的一种数据压缩格式,或者说一种文件格式。

    9 引用 • 12 回帖 • 125 关注
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 194 关注
  • Android

    Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

    334 引用 • 323 回帖 • 19 关注
  • SEO

    发布对别人有帮助的原创内容是最好的 SEO 方式。

    35 引用 • 200 回帖 • 30 关注
  • iOS

    iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。

    84 引用 • 139 回帖 • 1 关注
  • Hadoop

    Hadoop 是由 Apache 基金会所开发的一个分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

    85 引用 • 122 回帖 • 617 关注
  • 微服务

    微服务架构是一种架构模式,它提倡将单一应用划分成一组小的服务。服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在独立的进程中。服务于服务之间才用轻量级的通信机制互相沟通。每个服务都围绕着具体业务构建,能够被独立的部署。

    96 引用 • 155 回帖 • 1 关注
  • 设计模式

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

    198 引用 • 120 回帖
  • etcd

    etcd 是一个分布式、高可用的 key-value 数据存储,专门用于在分布式系统中保存关键数据。

    5 引用 • 26 回帖 • 499 关注
  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    180 引用 • 400 回帖 • 1 关注
  • CSS

    CSS(Cascading Style Sheet)“层叠样式表”是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。

    186 引用 • 471 回帖 • 3 关注
  • Sillot

    Insights(注意当前设置 master 为默认分支)

    汐洛彖夲肜矩阵(Sillot T☳Converbenk Matrix),致力于服务智慧新彖乄,具有彖乄驱动、极致优雅、开发者友好的特点。其中汐洛绞架(Sillot-Gibbet)基于自思源笔记(siyuan-note),前身是思源笔记汐洛版(更早是思源笔记汐洛分支),是智慧新录乄终端(多端融合,移动端优先)。

    主仓库地址:Hi-Windom/Sillot

    文档地址:sillot.db.sc.cn

    注意事项:

    1. ⚠️ 汐洛仍在早期开发阶段,尚不稳定
    2. ⚠️ 汐洛并非面向普通用户设计,使用前请了解风险
    3. ⚠️ 汐洛绞架基于思源笔记,开发者尽最大努力与思源笔记保持兼容,但无法实现 100% 兼容
    29 引用 • 25 回帖 • 52 关注
  • Facebook

    Facebook 是一个联系朋友的社交工具。大家可以通过它和朋友、同事、同学以及周围的人保持互动交流,分享无限上传的图片,发布链接和视频,更可以增进对朋友的了解。

    4 引用 • 15 回帖 • 458 关注
  • 快应用

    快应用 是基于手机硬件平台的新型应用形态;标准是由主流手机厂商组成的快应用联盟联合制定;快应用标准的诞生将在研发接口、能力接入、开发者服务等层面建设标准平台;以平台化的生态模式对个人开发者和企业开发者全品类开放。

    15 引用 • 127 回帖 • 1 关注
  • Chrome

    Chrome 又称 Google 浏览器,是一个由谷歌公司开发的网页浏览器。该浏览器是基于其他开源软件所编写,包括 WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。

    62 引用 • 289 回帖
  • Lute

    Lute 是一款结构化的 Markdown 引擎,支持 Go 和 JavaScript。

    25 引用 • 191 回帖 • 20 关注
  • Vim

    Vim 是类 UNIX 系统文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff)、语法高亮、全面的帮助系统、本地脚本(Vimscript)和便于选择的可视化模式。

    28 引用 • 66 回帖 • 7 关注
  • 又拍云

    又拍云是国内领先的 CDN 服务提供商,国家工信部认证通过的“可信云”,乌云众测平台认证的“安全云”,为移动时代的创业者提供新一代的 CDN 加速服务。

    21 引用 • 37 回帖 • 523 关注
  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    186 引用 • 318 回帖 • 329 关注