XML学习笔记(附上思维导图)

2023-05-16

 

【文章标题】XML学习笔记(附上思维导图)

【文章作者】曾健生

【作者邮箱】zengjiansheng1@126.com

【作者QQ190678908

【作者博客】http://blog.csdn.net/newjueqi

【作者声明】欢迎转载文章,但转载请保留文章的完整性以及注明文章的出处。

 

*******************************************************************************

 

       XML现在被广泛应用于WEB开发,属性它的基本概念和基本操作(增,删,改,查)等具有重要的意义。

 

1. 了解什么是 格式良好 xml 文档. 知道 xml 的基本语法

 a,文档声明必须在第一行

<?xml version="1.0" encoding="UTF-8"?>

 bXML标记名称区分大小写,标记名称不能包含空格。

c, XML空元素的表示:

    1.<student></student>

    2.<student/>

d,  XML不允许标签交叉,如下是不允许的:

    <customer>

          <name >jim

          <address>Beijing</name></address>

    </customer>

 eXML属性值要用单引号或双引号包含起来

 

本文所用的XML:

  <?xml version="1.0" encoding="UTF-8" ?>

- <customers>

- <customer id="001">

  <name>Tom</name>

  <age>13</age>

  <email>tom@sina.com</email>

  </customer>

- <customer id="002">

  <name>Jerry</name>

  <age>23</age>

  <email>jerry@sina.com</email>

  </customer>

- <customer id="003">

  <name>Bob</name>

  <age>33</age>

  <email>jerry@sina.com</email>

  </customer>

  </customers>

 

 

2. 利用 Dom4j 读取 xml 文档.

       2.1  得到 xml 文档代表的 Document 对象

 

//1.创建一个SAXReader对象

       SAXReader reader=new SAXReader();

      

       //创建一个XML文件的输入流

       File f=new File("E://workspace//dom4j//customers.xml");

      

       //创建一个文档对象

       Document doc=reader.read( f );

 

       2.2  熟悉 Element, Attribute, Node 等基本 API

//获取根节点

       Element root=doc.getRootElement();

      

       //获取根节点下的所有子节点的集合

       List<Element> e1 =root.elements();

      

       for( Element ele: e1 )

       {

          

           /*

            通过子节点的方法

            */

           //获取属性:ID值

           Attribute attr=ele.attribute(0);

           System.out.println( attr.getName()+" "+attr.getText());

          

           //获取子节点的名称

           System.out.println( ele.getName());

          

           //获取子节点的值

           System.out.println( ele.getText());      

          

           /*

            * 通过 Attribute获取值

            */

           System.out.println( ele.attributeValue("id"));//获取属性

           System.out.println( ele.elementText("name"));//获取子节点的姓名值

           System.out.println( ele.elementText("age"));//获取子节点的年龄值

       }

 

       2.3 使用 XPath 查找指定的节点

 

几个常用的:

 

Nodename:选取此节点的所有子节点

/:从根节点选取

//:从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置

@:选取属性

//title[@lang='eng']:选取所有 title 元素,且这些元素拥有值为 eng lang 属性

/bookstore/book[price>35.00]:选取所有 bookstore 元素的 book 元素,且其中的 price 元素的值须大于 35.00

 

/*

            * 使用XPath获取

            */

           //获取name的值为"Tom"的节点

           //Node node = doc.selectSingleNode( "//customer[name='"+"Tom"+"']" );

          

           //获取id的值为"001"的节点

           Node node = doc.selectSingleNode( "//customer[@id='"+"002"+"']" );

           Element el=(Element) node;

           System.out.println( el.attributeValue("id"));

 

 

3. XML文件的创建,增删操作

1XML文件的创建

public static void main(String[] args) throws IOException {

              // TODO Auto-generated method stub

              //1. 创建一个 Document 对象

              Document document = null;

              document = DocumentHelper.createDocument();

             

              //2. Document 对象下添加一个根节点: students

              Element root = document.addElement("students");

             

              //3. students 节点下添加 student 节点

              Element stuEle_1 = root.addElement("student");

             

              //4. student 节点下添加 name, age 子节点

              stuEle_1.addAttribute("id", "001");

              stuEle_1.addElement("name").setText("Mike");

              stuEle_1.addElement("age").setText("23");

             

              Element stuEle_2 = root.addElement("student");

              stuEle_2.addAttribute("id", "001");

              stuEle_2.addElement("name").setText("Rose");

              stuEle_2.addElement("age").setText("22");

             

              //5. 1 创建好的 Document 对象, 写到 students.xml 文件中

              XMLWriter xmlWriter = null;

              FileWriter fileWriter = new FileWriter("students.xml");

              OutputFormat format = OutputFormat.createPrettyPrint();

              xmlWriter = new XMLWriter(fileWriter, format);

              xmlWriter.write(document);

             

              xmlWriter.close();

       }

}

 

生成的XML如下:

  <?xml version="1.0" encoding="UTF-8" ?>

- <Students>

- <student id="002">

  <name>Tom</name>

  <age>23</age>

  </student>

- <student>

  <name>Jim</name>

  <age>24</age>

  </student>

  </Students>

 

 

2)增加子节点

A.获取新创建的子节点信息文本信息。

B.通过SAXReaderread( File f )方法获取XML文档的document对象。

C.注意,要现获取根节点,然后在根节点下按层次地用addElement()和addAttribute()增加子节点和属性。

D.用XMLWriter.write(Document doc)方法把修改后的Document对象持久化到XML文件中

E.关闭XMLWriter流。

 

3)删除子节点

A.获取XML文档的document对象

B.获取要删除子节点的对象,可使用Xpath方便地获取

C.获取要删除子节点的父节点

D.从document对象中用父节点. remove(子节点)的方法删除子节点

E.用XMLWriter.write(Document doc)方法把修改后的Document对象持久化到XML文件中

F.关闭XMLWriter流。

 

4)修改子节点

A.获取XML文档的document对象

B.获取要修改子节点的对象,可使用Xpath方便地获取


C. 对子节点的相关值进行修改,setText(String text)修改节点的值,setAttributeValue(String name,String value)修改属性值  

D. XMLWriter.write(Document doc)方法把修改后的Document对象持久化到XML文件中

E.关闭XMLWriter流。

 

附近下载:、

http://newjueqi.ys168.com/

 

附上思维导图:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

XML学习笔记(附上思维导图) 的相关文章

  • 十. 加班等于团队建设?

    摘要 xff1a 在IT界 xff0c 加班是不可避免的事情 但是 xff0c 加班的方式和心态 xff0c 将会影响加班的效率和加班的效果 健生干货分享 xff1a 第10篇 在移动互联网的日常工作中 xff0c 不能不提的是加班 总体来
  • 十一. 没有这4项素质,别想在创业公司

    摘要 xff1a 习惯了在大企业工作方式 xff0c 初次来到创业公司工作会觉得很不习惯 xff0c 因为创业公司中 xff0c 对人员有很特殊的素质要求 健生干货分享 xff1a 第11篇 在创业公司里工作久了 xff0c 慢慢就习惯了里
  • 十二.200多万元得到的创业教训--app名字是关键

    摘要 xff1a 当完成了一个app后 xff0c 就要需要上应用市场 xff0c 下面讲一下起名和上应用市场的一些技巧 健生干货分享 xff1a 第12篇 1 必须是先上app store xff0c 再上其他应用市场 为啥要这样做 xf
  • 解决bug: .cpython-37m-x86_64-linux-gnu.so: undefined symbol:

    解决bug cpython 37m x86 64 linux gnu so undefined symbol 时间 xff1a 2023年1月23日 一 问题 用python下pytorch编写cuda算子时 xff0c 在执行setup
  • 十三.200多万元得到的创业教训--用户体验就是人性

    摘要 用户体验是在产品或服务中重要的一环 xff0c 懂得人性 xff0c 什么是良好的用户体验就很明了 健生干货分享 xff1a 第13篇 在百度百科中的定义 xff1a 用户体验 xff08 UserExperience xff0c 简
  • 软件DIY----用汇编语言给XP记事本添加“自动保存”功能

    文章标题 用汇编语言 给XP记事本添加 自动保存 功能 文章作者 newjueqi 作者邮箱 zengjiansheng1 64 126 com 作者 QQ 190678908 使用工具 OD xff0c LordPE xff0c eXeS
  • 用16进制编辑器编写一个DLL文件

    文章标题 用16进制编辑器编写一个DLL文件 文章作者 newjueqi 作者邮箱 zengjiansheng1 64 126 com 作者QQ号 190678908 软件名称 Hello 软件大小 4K 编写语言 机器码 使用工具 Win
  • 浅谈快速阅读法

    文章标题 浅谈快速阅读法 文章作者 newjueqi 作者邮箱 zengjiansheng1 64 126 com 作者 QQ 190678908 作者 blog http blog csdn net newjueqi 文章说明 欢迎转载文
  • 十四.200多万元得到的创业教训--不健康,别创业

    摘要 xff1a 34 年轻时拿命换钱 xff0c 岁数大后拿钱换命 34 xff0c 这种说法 xff0c 真的是正确的吗 xff1f 健生干货分享 xff1a 第14篇 有多少人想过 xff0c 自己创业的目的是什么 xff1f 是为了
  • 十五.电商业老二,老三也能生存

    摘要 在互联网行业 xff0c 有句话 xff1a 人们只记得老大 xff0c 但随着移动互联网的崛起 xff0c 依托于社交红利 xff0c 这个现象正慢慢发生变化 健生干货分享 xff1a 第15篇 在传统的互联网中 xff0c 入口少
  • 十六.月收入过万的淘宝从业者的执行力,吓呆我了

    摘要 淘宝开店现在好不好做 xff0c 很多人说现在淘宝已经不好做 xff0c 但淘宝的生意真的没有生存的空间了吗 在不久前 xff0c 和一个做淘宝行业相关的哥们聊天 xff0c 他自曝月收入过万 xff0c 被他那狠狠的执行力吓呆了 健
  • 自媒体16天后的总结

    摘要 在网上写了一些文章 xff0c 16天过去了 xff0c 总结一下自己在16天里的得失 健生干货分享 xff1a 第17篇 写了16天的文章 xff0c 有的文章我很用心的写 xff0c 但反应平淡 xff0c 有的文章 xff0c
  • 改变Windows窗口颜色,保护好眼睛

    研究表明 xff0c 绿色和蓝色对眼睛最好 xff0c 在长时间用电脑后 xff0c 经常看看蓝天 绿地就能在一定程度上缓解视疲劳 如果我们把电脑屏幕和网页的底色变为淡淡的苹果绿 xff0c 也可在一定程度上有效地缓眼睛疲劳症状了 在桌面上
  • 一个保护眼睛的小技巧

    一般情况用我都是800 600分辨率 xff0c 字体比较大 xff0c 看着舒服 如果在阅读文字资料时 xff0c 我喜欢用比较大的字体 xff0c 背景色是蓝色 xff0c 如下图 嘻嘻 xff0c 是不是看起来一点都不费神 xff0c
  • MySQL四种安装方式

    仓库安装 先在mysql官网上找到需要版本的域名然后用rpm安装下载下来 root 64 bb rpm ivh https repo mysql com mysql80 community release el9 1 noarch rpm
  • 十八. 200多万元得到的创业教训--社交软件之殇

    健生干货分享 xff1a 第18篇 摘要 xff1a 用了两年时间 xff0c 完成了两款社交app的开发 xff0c 两款app都挂掉了 xff0c 社交app成功的关键的是对用户 xff0c 产品的把握 xff0c 整合资源的能力 xf
  • 初学python

    文章作者 newjueqi 作者邮箱 zengjiansheng1 64 126 com 作者QQ号 190678908 作者博客 http blog csdn net newjueqi 作者声明 欢迎转载文章 xff0c 但转载请保持文章
  • 十九. 想快速开发app,需要找外包吗?

    健生干货分享 xff1a 第19篇 摘要 xff1a 最近和两位准备开发app的创业者聊天 xff0c 他们之前没有移动互联网的相关经验 xff0c 有的是想法和资金 他们在纠结 想快速开发app xff0c 需要找外包吗 xff1f 最近
  • 一种进制转换的特殊方法

    文章标题 一种进制转换的特殊方法 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者 QQ 190678908 作者博客 http blog csdn net newjueqi 编程环境 JDK 1 6 0
  • 从计算机的核心思想探讨一种进制转换的方法

    文章标题 从计算机的核心思想探讨一种进制转换的方法 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者 QQ 190678908 作者博客 http blog csdn net newjueqi 编程环境

随机推荐

  • 用面向对象的思想探讨游戏“魔兽争霸”(1)

    文章标题 用面向对象的思想探讨游戏 魔兽争霸 xff08 1 xff09 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者 QQ 190678908 作者博客 http blog csdn net new
  • 用面向对象的思想探讨游戏“魔兽争霸”(2)-继承和多态的应用(修改版)

    文章标题 用面向对象的思想探讨游戏 魔兽争霸 2 继承和多态的应用 修改版 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者 QQ 190678908 作者博客 http blog csdn net ne
  • 改良用简单工厂模式构造的计算器代码—“反射”技术

    文章标题 改良用简单工厂模式构造的计算器代码 反射 技术 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者 QQ 190678908 作者博客 http blog csdn net newjueqi 编程
  • 用面向对象的思想探讨游戏“魔兽争霸”(3)-模板模式的应用(修改版)

    文章标题 用面向对象的思想探讨游戏 魔兽争霸 3 模板模式的应用 修改版 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者 QQ 190678908 作者博客 http blog csdn net new
  • 打造山寨产品和伪造产品的利器——装饰模式

    文章标题 打造山寨产品和伪造产品的利器 装饰模式 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者 QQ 190678908 作者博客 http blog csdn net newjueqi 编程环境 J
  • 信号中断 与 慢系统调用

    1 术语 1 1 慢系统调用 xff08 Slow system call xff09 该术语适用于那些可能永远阻塞的系统调用 永远阻塞的系统调用是指调用永远无法返回 xff0c 多数网络支持函数都属于这一类 如 xff1a 若没有客户连接
  • nodejs中处理回调函数的异常

    如果是使用nodejs 43 express3这个经典的组合 xff0c 那么有一种很方面的处理回调函数异常的方法 xff1a 1 安装模块 xff1a express domain middleware 2 加入如下的代码 xff1a a
  • 简单模拟Java中创建多线程的两种方法

    文章标题 简单模拟 Java 中创建多线程的两种方法 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者 QQ 190678908 作者博客 http blog csdn net newjueqi 编程环境
  • 虚拟桌面技术的初步探讨

    文章标题 虚拟桌面技术的初步探讨 文章作者 newjueqi 作者邮箱 zengjiansheng1 64 126 com 作者QQ号 190678908 编写语言 VC 43 43 6 0 操作平台 XP SP2 作者声明 感觉到这是一种
  • 一个网游盗号木马的汇编源码分析

    文章标题 xff1a 一个网游盗号木马的汇编源码分析 文章作者 newjueqi 作者邮箱 zengjiansheng1 64 126 com 作者QQ号 190678908 使用工具 IDA 操作平台 XP SP2 作者声明 今年7月份学
  • miranda分析报告

    文章标题 miranda分析报告 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者 QQ 190678908 作者博客 http blog csdn net newjueqi 作者声明 欢迎转载文章 xf
  • Java线程类小结(附思维导图)

    文章标题 Java 线程类小结 xff08 附思维导图 xff09 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者 QQ 190678908 作者博客 http blog csdn net newjue
  • Java集合类小结(思维导图版)

    文章标题 Java 集合类小结 思维导图版 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者 QQ 190678908 作者博客 http blog csdn net newjueqi 编程环境 JDK
  • 简单文件分割合并器的Java实现

    文章标题 简单文件分割合并器的 Java 实现 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者 QQ 190678908 作者博客 http blog csdn net newjueqi 编程环境 JD
  • 层级菜单动态效果的实现

    文章标题 层级菜单动态效果的实现 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者 QQ 190678908 作者博客 http blog csdn net newjueqi 编程环境 Dreamweav
  • 简单实现邮件系统的界面功能

    文章标题 简单实现邮件系统的界面功能 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者 QQ 190678908 作者博客 http blog csdn net newjueqi 编程环境 Dreamwe
  • linux多线程编程书籍推荐:linux大牛之路从这几本书开始总结

    linux多线程编程是指基于Linux操作系统下的多线程编程 xff0c 包括多任务程序的设计 xff0c 并发程序设计 网络程序设计 xff0c 数据共享等 Linux系统下的多线程遵循POSIX线程接口 xff0c 称为pthread
  • 动态增加附件上传文件框的实现

    文章标题 动态增加附件上传文件框的实现 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者 QQ 190678908 作者博客 http blog csdn net newjueqi 编程环境 Dreamw
  • app后端设计(12)--图片的处理

    app上线后 xff0c 不断接受用户的反馈 xff0c 于是 xff0c 反馈非常差的情况下 xff0c 都会有app的改版 一旦app的改版 xff0c 都会有比较大的UI改动 xff0c 一改动UI xff0c 那么图片的尺寸也就必须
  • XML学习笔记(附上思维导图)

    文章标题 XML 学习笔记 附上思维导图 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者 QQ 190678908 作者博客 http blog csdn net newjueqi 作者声明 欢迎转载文