xml入门语法及解析操作xml文档

忘是亡心i 2022-05-11 00:44 305阅读 0赞

xml基础入门和解析(操作xml文档)

入门语法

  1. 1、基本语法:
  2. A. xml文档的后缀名 .xml
  3. B. xml第一行必须定义为文档声明
  4. C. xml文档中有且仅有一个根标签
  5. D. 属性值必须使用引号(单双都可)引起来
  6. E. 标签必须正确关闭
  7. F. xml标签名称区分大小写
  8. 快速入门:
  9. <?xml version='1.0' ?>
  10. <users>
  11. <user id='1'>
  12. <name>zhangsan</name>
  13. <age>23</age>
  14. <gender>male</gender>
  15. <br/>
  16. </user>
  17. <user id='2'>
  18. <name>lisi</name>
  19. <age>24</age>
  20. <gender>female</gender>
  21. </user>
  22. </users>
  23. 2、组成部分:
  24. A. 文档声明
  25. 1. 格式:<?xml 属性列表 ?>
  26. 2. 属性列表:
  27. version:版本号,必须的属性
  28. encoding:编码方式。告知解析引擎当前文档使用的字符集,默认值:ISO-8859-1
  29. standalone:是否独立
  30. 取值:
  31. yes:不依赖其他文件
  32. no:依赖其他文件
  33. B. 指令(了解):结合css
  34. <?xml-stylesheet type="text/css" href="a.css" ?>
  35. C. 标签:标签名称自定义的
  36. 规则:
  37. 名称可以包含字母、数字以及其他的字符
  38. 名称不能以数字或者标点符号开始
  39. 名称不能以字母 xml(或者 XMLXml 等等)开始
  40. 名称不能包含空格
  41. D. 属性:
  42. id属性值唯一
  43. E. 文本:
  44. CDATA区:在该区域中的数据会被原样展示
  45. 格式: <![CDATA[ 数据 ]]>
  46. 3、约束:(规定xml文档的书写规则)
  47. 作为框架的使用者(程序员):
  48. 1. 能够在xml中引入约束文档
  49. 2. 能够简单的读懂约束文档
  50. 分类:
  51. 1. DTD:一种简单的约束技术
  52. 2. Schema:一种复杂的约束技术
  53. DTD
  54. 引入dtd文档到xml文档中
  55. 内部dtd:将约束规则定义在xml文档中
  56. 外部dtd:将约束的规则定义在外部的dtd文件中
  57. 本地:<!DOCTYPE 根标签名 SYSTEM "dtd文件的位置">
  58. 网络:<!DOCTYPE 根标签名 PUBLIC "dtd文件名字" "dtd文件的位置URL">
  59. Schema:
  60. 引入:
  61. 1.填写xml文档的根元素
  62. 2.引入xsi前缀. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  63. 3.引入xsd文件命名空间. xsi:schemaLocation="http://www.itcast.cn/xml student.xsd"
  64. 4.为每一个xsd约束声明一个前缀,作为标识 xmlns="http://www.itcast.cn/xml"
  65. <students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  66. xmlns="http://www.itcast.cn/xml"
  67. xsi:schemaLocation="http://www.itcast.cn/xml student.xsd">

解析:操作xml文档,将文档中的数据读取到内存中

  1. 1、操作xml文档
  2. a. 解析(读取):将文档中的数据读取到内存中
  3. b. 写入:将内存中的数据保存到xml文档中。持久化的存储
  4. A.解析xml的方式:
  5. a. DOM:将标记语言文档一次性加载进内存,在内存中形成一颗dom
  6. 优点:操作方便,可以对文档进行CRUD的所有操作
  7. 缺点:占内存
  8. b. SAX:逐行读取,基于事件驱动的。
  9. 优点:不占内存。
  10. 缺点:只能读取,不能增删改
  11. B.xml常见的解析器:
  12. 1. JAXPsun公司提供的解析器,支持domsax两种思想
  13. 2. DOM4J:一款非常优秀的解析器
  14. 3. Jsoupjsoup 是一款Java HTML解析器,可直接解析某个URL地址、HTML文本内容。
  15. 它提供了一套非常省力的API,可通过DOMCSS以及类似于jQuery的操作方法来取出和操作数据。
  16. 4. PULLAndroid操作系统内置的解析器,sax方式的。
  17. 2Jsoup
  18. Jsoupjsoup 是一款Java HTML解析器,可直接解析某个URL地址、HTML文本内容。
  19. 它提供了一套非常省力的API,可通过DOMCSS以及类似于jQuery的操作方法来取出和操作数据。
  20. A.快速入门:
  21. a.步骤:
  22. 1. 导入jar
  23. 2. 获取Document对象
  24. 3. 获取对应的标签Element对象
  25. 4. 获取数据
  26. b.代码:
  27. //2.1获取student.xml的path
  28. String path = JsoupDemo1.class.getClassLoader().getResource("student.xml").getPath();
  29. //2.2解析xml文档,加载文档进内存,获取dom树--->Document
  30. Document document = Jsoup.parse(new File(path), "utf-8");
  31. //3.获取元素对象 Element
  32. Elements elements = document.getElementsByTag("name");
  33. System.out.println(elements.size());
  34. //3.1获取第一个name的Element对象
  35. Element element = elements.get(0);
  36. //3.2获取数据
  37. String name = element.text();
  38. System.out.println(name);
  39. B.对象的使用:
  40. 1. Jsoup:工具类,可以解析htmlxml文档,返回Document
  41. parse:解析htmlxml文档,返回Document
  42. parse​(File in, String charsetName):解析xmlhtml文件的。
  43. parse​(String html):解析xmlhtml字符串
  44. parse​(URL url, int timeoutMillis):通过网络路径获取指定的htmlxml的文档对象
  45. 2. Document:文档对象。代表内存中的dom
  46. 获取Element对象
  47. getElementById​(String id):根据id属性值获取唯一的element对象
  48. getElementsByTag​(String tagName):根据标签名称获取元素对象集合
  49. getElementsByAttribute​(String key):根据属性名称获取元素对象集合
  50. getElementsByAttributeValue​(String key, String value):根据对应的属性名和属性值获取元素对象集合
  51. 3. Elements:元素Element对象的集合。可以当做 ArrayList<Element>来使用
  52. 4. Element:元素对象
  53. a. 获取子元素对象
  54. getElementById​(String id):根据id属性值获取唯一的element对象
  55. getElementsByTag​(String tagName):根据标签名称获取元素对象集合
  56. getElementsByAttribute​(String key):根据属性名称获取元素对象集合
  57. getElementsByAttributeValue​(String key, String value):根据对应的属性名和属性值获取元素对象集合
  58. b. 获取属性值
  59. String attr(String key):根据属性名称获取属性值
  60. c. 获取文本内容
  61. String text():获取文本内容
  62. String html():获取标签体的所有内容(包括字标签的字符串内容)
  63. 5. Node:节点对象, DocumentElement的父类
  64. C.快捷查询方式:
  65. 1. selector:选择器
  66. 使用的方法:Elements select​(String cssQuery)
  67. 语法:参考Selector类中定义的语法
  68. 2. XPathXPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言
  69. 使用JsoupXpath需要额外导入jar包。
  70. 查询w3cshool参考手册,使用xpath的语法完成查询

代码:

  1. //1.获取student.xml的path
  2. String path = JsoupDemo6.class.getClassLoader().getResource("student.xml").getPath();
  3. //2.获取Document对象
  4. Document document = Jsoup.parse(new File(path), "utf-8");
  5. //3.根据document对象,创建JXDocument对象
  6. JXDocument jxDocument = new JXDocument(document);
  7. //4.结合xpath语法查询
  8. //4.1查询所有student标签
  9. List<JXNode> jxNodes = jxDocument.selN("//student");
  10. for (JXNode jxNode : jxNodes) {
  11. System.out.println(jxNode);
  12. }
  13. System.out.println("--------------------");
  14. //4.2查询所有student标签下的name标签
  15. List<JXNode> jxNodes2 = jxDocument.selN("//student/name");
  16. for (JXNode jxNode : jxNodes2) {
  17. System.out.println(jxNode);
  18. }
  19. System.out.println("--------------------");
  20. //4.3查询student标签下带有id属性的name标签
  21. List<JXNode> jxNodes3 = jxDocument.selN("//student/name[@id]");
  22. for (JXNode jxNode : jxNodes3) {
  23. System.out.println(jxNode);
  24. }
  25. System.out.println("--------------------");
  26. //4.4查询student标签下带有id属性的name标签 并且id属性值为itcast
  27. List<JXNode> jxNodes4 = jxDocument.selN("//student/name[@id='itcast']");
  28. for (JXNode jxNode : jxNodes4) {
  29. System.out.println(jxNode);
  30. }

发表评论

表情:
评论列表 (有 0 条评论,305人围观)

还没有评论,来说两句吧...

相关阅读

    相关 SAX解析XML文档

    1、简介 前面我们介绍过利用DOM解析XML文档,Dom解析功能强大,可增删改查,操作时会将XML文档读到内存,因此适用于小文档;SAX解析是从头到尾逐行逐个元素解析,修改较

    相关 DOM解析XML文档

    1、简介 DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM 是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结