DOM4J熟知

简介: 什么是解析xml   系统最终会从xml中读取数据. 读取的过程就是解析.CRUD ==> 增删改查 ==> create read update delete ==> 解析指的就是读.什么是解析器   就是用来解析xml的类.

什么是解析xml
  系统最终会从xml中读取数据. 读取的过程就是解析.

CRUD ==> 增删改查 ==> create read update delete ==> 解析指的就是读.

什么是解析器
  就是用来解析xml的类.
  过滤器,拦截器,监听器.... 都是具备相应功能的java类而已.

两个常见的解析xml的思路
思想
  DOM 将文档中所有内容都封装成对象. 读取时,将所有对象都加载到内存中. 在内存中创建一颗dom树(记录对象间的关系).
优点  方便的进行增删改查.
缺点  会非常消耗内存.

  SAX 事件驱动的. 与pull解析类似.把xml文档的读取过程,划分出5类事件.我们只要提供遇到每类事件做什么的锦囊即可.
优点  内存占用小.
缺点  不能进行增删改的操作.

DOM 解析是由w3c推荐提出的.
SAX  解析是由民间提出的.

DOM 把所有内容封装成了5类对象.
  document  Element  Attribute  Text  Commons
共同的父类
node
  Node的属性 自身属性 nodeType  nodeName  nodeValue
  导航属性
    找子节点的:firstChild   lastChild   childNodes
    找父节点的:parentNode
    找兄弟节点:nextSibling   previousSibling

获得Element的方式
  getElementById ==> Document
  getELementsByTagName ==> Document/Element
  getELementsByClassName ==> Document/Element
  getElementsByName ==> Document

对于增删改的操作:
  创建一个元素: document.createElement
  添加一个元素: element.appendChild ,element.insertBefore
  替换一个元素: element.replaceChild
  删除一个元素: element.removeChild

JAXP ==> JDK提供的 ==> java api for xml parser
思想在java中的体现是接口. 我们要开发的话需要接口的实现类.由各大解析器厂商提供实现接口的类.

A a = new AImpl();   //Aimpl2;
A a = new AImpl2();
上面的切换实现类的方式,需要该源代码,太过原始
A a = JAXP.getXXX();  ==> 配置文件   ==> 我们通过修改配置文件就可以实现切换实现类.
反射.泛型.

DOM4J ==> 框架 ==>
Dom for java
DOM4J 整合两种思想.(SAX DOM)的思想. 使用sax的思想做读取xml. 又参照dom的思想,也在内存中创建了一颗对象关系树. 

用dom4j如何避免乱码

要保证写入的编码和读取的编码一致
  1.写入的编码如何控制?
  XMLWriter writer = new XMLWriter(new PrintWriter("src/str.xml","UTF-8"),format);
  2.读取的编码如何控制?
  <?xml version="1.0" encoding="GBK"?>,其中encoding属性决定了读取时采用什么编码,而encoding属性由format.setEncoding("GBK");控制.

//其实要保证不乱码上面的方法太弱了!
方法  使用字节流绝对不会出现乱码! 如下
  XMLWriter writer = new XMLWriter(new FileOutputStream("src/str.xml"),format);

目录
相关文章
|
2天前
|
数据采集 人工智能 安全
|
11天前
|
云安全 监控 安全
|
3天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1022 151
|
3天前
|
编解码 人工智能 机器人
通义万相2.6,模型使用指南
智能分镜 | 多镜头叙事 | 支持15秒视频生成 | 高品质声音生成 | 多人稳定对话
|
17天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1720 9
|
8天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
660 152
|
10天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
626 14
|
5天前
|
SQL 自然语言处理 调度
Agent Skills 的一次工程实践
**本文采用 Agent Skills 实现整体智能体**,开发框架采用 AgentScope,模型使用 **qwen3-max**。Agent Skills 是 Anthropic 新推出的一种有别于mcp server的一种开发方式,用于为 AI **引入可共享的专业技能**。经验封装到**可发现、可复用的能力单元**中,每个技能以文件夹形式存在,包含特定任务的指导性说明(SKILL.md 文件)、脚本代码和资源等 。大模型可以根据需要动态加载这些技能,从而扩展自身的功能。目前不少国内外的一些框架也开始支持此种的开发方式,详细介绍如下。
385 4