第十章,XML

高级编程

文章目录

第十章,XML
一,XML简介
  • XML(EXtensible Markup Language),可扩展标记语言

  • 特点

    • XML与操作系统。编程语言的开发平台无关
    • 实现不同系统数据之间的交换
  • 作用

    • 数据交互
    • 配置应用程序和网站
    • Ajax基石
  • XML文档结构

    xml 复制代码
    <?xml version="1.0" encoding="UTF-8"?>
    <books>
        <!--图书信息 -->
        <book id="bk101">
            <author>王珊</author>
            <title>.NET高级编程</title>
            <description>包含C#框架和网络编程等</description>
        </book>
        <book id="bk102">
            <author>李明明</author>
            <title>XML基础编程</title>
            <description>包含XML基础概念和基本作用</description>
        </book>
    </books>
  • XML标签

    • XML文档内容由一系列表标签元素组成

      xml 复制代码
      <元素名 属性名="属性值">元素内容</元素名>
    • 属性值用双引号包裹

    • 一个元素可以有多个属性

    • 属性值中不能直接包含<、"、&

    • 不建议使用的字符:'、>

二,XML编写注意事项
  • 所有XML元素都必须有结束标签
  • XML标签对大小写敏感
  • XML必须正确的嵌套
  • 同级标签以缩进对齐
  • 元素名称可以包含字母、数字或其他的字符
  • 元素名称不能以数字或者标点符号开始
  • 元素名称中不能含空格
三,转移符
四,XML解析器
  • 解析器类型
    • 非验证解析器
      • 检查文档格式是否良好
    • 验证解析器
      • 使用DTD检查文档格式的有效性
五,XML命名空间
  • XML命名空间的作用

    • 解决在复杂,大型xml文件中,出现名称相同,但是含义不同的元素

      xml 复制代码
      <?xml version="1.0" encoding="UTF-8"?>
      <cameras xmlns:canon="http://www.canon"
          xmlns:nikon="http://www.nikon.com">
          <canon:camera prodID="P663" name="Camera傻瓜相机"/>
          <nikon:camera prodID="K29B3" name="Camera超级35毫米相机"/>
      </cameras>
六,解析XML技术
  • DOM
    • 基于XML文档树结构的解析
    • 适用于多次访问的XML文档
    • 特点:比较消耗资源
  • SAX
    • 基于事件的解析
    • 适用于大数据量的XML文档
    • 特点:占用资源少,内存消耗小
  • DOM4J
    • 非常优秀的Java XML API
    • 性能优异、功能强大
    • 开放源代码
七,DOM解析XML
  • DOM介绍

    • 文档对象模型(Document Object Model)
    • DOM把XML文档映射成一个倒挂的树
  • 常用接口介绍

  • 访问DOM树节点

    • DOM解析XML文件步骤
      • 创建解析器工厂对象
      • 解析器工厂对象创建解析器对象
      • 解析器对象指定XML文件创建Document对象
      • 以Document对象为起点操作DOM树
八,保存XML文件
  • 获得TransformerFactory对象
  • 创建Transformer对象
  • 创建DOMSource对象
    • 包含XML信息
  • 设置输出属性
    • 编码格式
  • 创建StreamResult对象
    • 包含保存文件的信息
  • 将XML保存到指定文件中
相关推荐
Oneslide18 小时前
Pod启动失败: /var/lib/kubelet/xxx/kube-api-access/ :no space left on device
后端
xiaohe0718 小时前
自己编译RustDesk,并将自建ID服务器和key信息写入客户端
java
南方的耳朵18 小时前
Neutron VLAN 网络模型 + Linux bridge 驱动 + 集中式路由 完整实现方案整理
后端
smile_life_18 小时前
使用idea查看maven依赖
java·maven·intellij-idea
Predestination王瀞潞18 小时前
1. Java SE到底是什么:不仅仅是面向对象
java·开发语言
MekoLi2918 小时前
Arthas 安装与使用全流程教程
后端·面试
苏渡苇18 小时前
虚拟线程(Virtual Threads)初体验:10万并发如喝水(JDK 21)
java·高并发·虚拟线程·jdk21·virtual threads
JavaGuide18 小时前
美团面试:为什么要用分布式缓存?本地缓存呢?多级缓存一致性如何保证?
数据库·redis·后端·缓存·大厂面试
JavaGuide18 小时前
为什么要用分布式缓存?本地缓存呢?多级缓存一致性如何保证?
redis·后端
yuanlaile18 小时前
2026后端趋势:Java 老了?Go 才是未来?
java·后端·golang·go与java·后端学什么