• XML文件和DOM简单操作


    XML简介

    XML(EXtensible Markup Language),可扩展标记语言

    主要目的是要在不同的机器之间进行通信的数据规范

    特点

    XML与操作系统、编程语言的开发平台无关

    实现不同系统之间的数据交换

    作用

    数据交互

    配置应用程序和网站

    Ajax基石

    XML文档结构

    声明

     

    文档元素描述信息(文档结构) 

     

     XML标签

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

    <元素名 属性名=“属性值”>元素内容

    空元素:   

    属性值用双引号包裹

    一个元素可以有多个属性

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

    不建议使用的字符:‘、> 

    XML编写注意事项

            1)所有XML元素都必须有结束标签

            2)XML标签对大小写敏感

            3)XML必须正确的嵌套

            4)同级标签以缩进对齐

            5)元素名称可以包含字母、数字或其他的字符

            6)元素名称不能以数字或者标点符号开始

            7)元素名称中不能含空格

    编写XML步骤(以MyEclipse为例)

    1.点击文件右击,点开New选项,选中Other

    2.选择中间XML(Basic Templates),点击next选项

     

    3.设置该XML文件名,可以是中文,点击Finish完成

     

     

    解析XML技术

    常见的三种解析技术

    1.DOM

            基于XML文档树结构的解析

            适用于多次访问的XML文档

            特点:比较消耗资源

    2.SAX

            基于事件的解析

            适用于大数据量的XML文档

            特点:占用资源少,内存消耗小

    3.DOM4J

            非常优秀的Java XML API

            性能优异、功能强大

            开放源代码 

    本文简单介绍DOM解析XML,下一篇详细介绍DOM和DOM4j解析XML,对SAX感兴趣的自己去查(能说我也不会吗哈哈

    DOM解析XML

    DOM介绍

    文档对象模型(Document Object Model) DOM把XML文档映射成一个倒挂的树

    常用接口介绍

            DOM解析包:org.w3c.dom

    常用接口

    常用方法

    说明

    Document:表示整个 XML 文档

    NodeList getElementsByTagName(String Tag)

    按文档顺序返回文档中指定标记名称的所有元素集合

    Element createElement(String tagName)

    创建指定标记名称的元素

    Node:该文档树中的单个节点

    NodeList getChildNodes()

    获取该元素的所有子节点,返回节点集合

    Element:XML 文档中的一个元素

    String getTagName()

    获取元素名称

    DOM解析XML文件步骤  

    1.创建解析器工厂对象  

    2.解析器工厂对象创建解析器对象  

    3.解析器对象指定XML文件创建Document对象  

    4.以Document对象为起点操作DOM树 

    1. package demo02;
    2. import java.io.IOException;
    3. import javax.xml.parsers.DocumentBuilder;
    4. import javax.xml.parsers.DocumentBuilderFactory;
    5. import javax.xml.parsers.ParserConfigurationException;
    6. import org.w3c.dom.Document;
    7. import org.xml.sax.SAXException;
    8. public class XmlDocumentDemo01 {
    9. public static void main(String[] args) {
    10. /*需求:将XML文件转换成DocumentBuilderFactory
    11. *
    12. * 1)创建解析器工厂对象DocumentBuilderFactory
    13. * 2)通过解析器工厂对象创建解析器对象
    14. * 3)通过解析器对象调用方法将XML文件转换为Document对象
    15. * 4)通过Document对象去操作XML文件里的数据
    16. *
    17. */
    18. // 第一步:获取解析器工厂对象
    19. DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
    20. try {
    21. //第二步:通过解析器工厂对象dbf创建解析器对象
    22. DocumentBuilder db=dbf.newDocumentBuilder();
    23. //第三步:通过解析器对象调用方法将XML文件转换成Document对象
    24. Document document = db.parse("收藏信息.xml");
    25. System.out.println(document);
    26. } catch (ParserConfigurationException e) {
    27. e.printStackTrace();
    28. } catch (SAXException e) {
    29. e.printStackTrace();
    30. } catch (IOException e) {
    31. e.printStackTrace();
    32. }
    33. }
    34. }

    定义一个方法实现获取Document对象操作 

    1. package demo02;
    2. import java.io.IOException;
    3. import javax.xml.parsers.DocumentBuilder;
    4. import javax.xml.parsers.DocumentBuilderFactory;
    5. import javax.xml.parsers.ParserConfigurationException;
    6. import org.w3c.dom.Document;
    7. import org.xml.sax.SAXException;
    8. public class XmlDocumentDemo02 {
    9. Document document;
    10. //定义一个方法实现获取Document对象操作
    11. public Document getDocument(String url){
    12. try {
    13. //创建解析器工厂对象
    14. DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
    15. //通过解析器工厂独享创建解析器对象
    16. DocumentBuilder db=dbf.newDocumentBuilder();
    17. document=db.parse(url);
    18. } catch (ParserConfigurationException e) {
    19. e.printStackTrace();
    20. } catch (SAXException e) {
    21. e.printStackTrace();
    22. } catch (IOException e) {
    23. e.printStackTrace();
    24. }
    25. return document;
    26. }
    27. }

     XML案例:

    1. "1.0" encoding="UTF-8"?>
    2. <PhoneInfo>
    3. <Brand name="华为">
    4. <Type name="U8650" />
    5. <Type name="HW123" />
    6. <Type name="HW321" />
    7. Brand>
    8. <Brand name="苹果">
    9. <Type name="iPhone13" />
    10. Brand>
    11. PhoneInfo>

  • 相关阅读:
    【书籍 类】机器学习实战(一):深度之眼
    maven与nexus
    MySQL(二)基本SQL语句以及基本函数应用
    模块首页UX交互升级,接口测试支持禁用本地执行,MeterSphere开源持续测试平台v2.4.0发布
    Docker 安装 nginx mysql redis minio leanote springboot云原生
    毕设选题推荐基于微信小程序智能停车预定管理系统
    银行IT智能运维一体化建设实践分享
    C语言网络编程
    分布式架构-流量治理-流量控制
    82.(cesium之家)cesium点在3d模型上运动
  • 原文地址:https://blog.csdn.net/qq_51810428/article/details/126528388