【你也能从零基础学会网站开发】Web建站之javascript入门篇 简单介绍DOM与XML

🚀 个人主页 极客小俊
✍🏻 作者简介:程序猿、设计师、技术分享
🐋 希望大家多多支持, 我们一起学习和进步!
🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注

XML概述

XML是Extensible Markup Language的缩写,它是一种类似于HTML的标记语言,用来描述数据的层次结构及存储数据 。

XML应用背景

XML技术已经为成为中间数据的标准格式,使用XML描述的数据可以在任何系统间进行数据交换。近年来XML已经广泛的使用在了应用开发的各个方面,当中也包含Internet。在Web开发中,XML用于描述各种各样的数据用以交换

比如流行的Ajax技术就使用XML来描述在浏览器端到服务器端的数据。

XML是一种描述数据结构的语言,与之相应的是XML语言解析器。
如果没有解析器它所描述的数据就无法理解,同时也失去了意义。
程序接口对程序员来说统称为API,最先出现针对XML的API是SAX(Simple API for XML),它是一套程序包。

SAX提供了一套基于事件的XML解析的API。
SAX解析器从XML文件的开头出发,每当遇到节点标签、文本或者其他的XML语法时,就会激发一个事件。
事件处理程序由应用开发人员编写,因此可以在事件处理程序中决定如何处理XML文件当前节点的数据。

W3C的DOM规范制定了一系列标准用于描述结构化、层次化的数据

如图

例如HTML和XML, 使用DOM接口处理XML文件是当前WEB客户端开发常用的方法,大多数浏览器都实现W3C制定的DOM接口

节点的层次

DOM以树的形式组织文档中的数据,树的结构也就是由HTML或XML文档的元素节点组成的结构。

遍历一个文档中所有结点就是遍历DOM树的操作,第一个节点使用一个Node对象来表示,该对象提供了操作节点的接口 , document是最顶层的节点,所有的其他节点都是附属于它的 。

举个栗子

XML文档节点层次如下XML代码如下

<?xml version="1.0" encoding="gb2312">            <!--XML文件开始-->
<products>                    <!--产品集合-->
    <product>                    <!--产品-->
        <name>IBM Thinkpad R61i 7732CJC</name><!--名字-->
        <price>5300</price>            <!--价格-->
    </product>                <!--产品结束-->
    <product>                    <!--产品-->
        <name>CGX</name>            <!--名字-->
        <price>100</price>            <!--价格-->
    </product>                <!--产品结束-->
</products>                    <!--产品结束-->
<customers>                    <!--客户集合-->
<customer>                <!--客户-->
    <name>Peter</name>        <!--名字-->
    <phone>123456</phone>        <!--电话-->
</customer>
<customer>                <!--客户-->
    <name>Zognan</name>        <!--名字-->
    <phone>456789</phone>        <!--电话-->
</customer>
</customers>

DOM介绍

DOM接供操作遵循DOM规范文档的能力,使用DOM来操作页面中的元素 。
诸如,更改元素显示的内容、添加删除节点、遍历统计节点、过滤特定内容等等 。
访问相关的节点

JavaScript在Web客户端的编程工作基本上都围绕DOM展开,DOM的常用操作就是创建、访问、修改各个元素节点
childNodes:每一个节点的所有下一级子节点组成一个集合,该集合作为该节点的childNodes属性

特定语言的文档模型

DOM模型是以XML为核心,所有遵循DOM规范的文档都可以使用DOM接口来处理。
但已经得到广泛应用的HTML却没有完全遵循DOM规范,因此为了能支持HTML,W3C提出针对HTML的DOM规范。

HTML DOM特性

JavaScript是动态语言,属性、方法、事件在其中称为特性。属性用于描述对象的状态,但在使用上却和事件一样,通过给事件赋予一个函数的地址即可完成绑定的任务,操作方式和给属性赋值一样。

在标准DOM中,通常使用getAttribute和setAttribute操作的特性,但特定于HTML的DOM为能更方便的操作对象的特性,将操作方式统一起来。

使用DOM

下面是Node对象的常用方法和属性:

firstChild,表示头一个子节点。
lastChild,表示最后一个子节点。
hasChildNodes(),判断是否拥有子节点。
childNodes,子节点集合。
parentNode,其父节点的引用。

检测当前HTML文档BODY标签下的所有节点,并将节点名输出 。

处理节点属性

DOM的节点对象都拥有一些从Node对象继承而来的属性,也可以拥有自己独有的属性。
属性可以用来存储一些与节点相关的数据,获取元素的属性getAttribute,设置元素的属性setAttribute(name,value)方法。

访问指定节点

DOM接口提供了更快更方便的方法访问一个指定的节点,例如通过指定节点标签名、节点名称或节点ID来获得目标节点的引用。

getElementsByTagName,该方法返回一个与指定标签名吻合的节点对象的引用
如果传入的标签名为*,则返回文档中所有的节点元素。
getElementsByName,该方法返回与指定name属性相吻合的元素集合。
getElementById,该方法返回与指定ID相同元素节点

创建新节点

DOM接口对节点的操作不仅仅只有访问,还可以为一个节点创建任意数目的子节点 。

例如

createTextNode,创建文本节点。
createDocumentFragment,创建文档碎片。
createElement,通过指定标签名创建节点(元素)

修改节点 :在文档对象(DOM)中,可以动态的插入、删除或替换某一个节点。节点对象(Node)提供实现这些操作的方法,这方法都通过节点对象(Node)来调用。

例如

removeChild,删除一个指定的子节点。
insertBefore,在指定的子节点前插入一个子节点。
replaceChild,用一个节点替换一个指定的节点。
appendChild,在一个元素节点中创建一个元素。 

"👍点赞" "✍️评论" "收藏❤️"

大家的支持就是我坚持下去的动力!

如果以上内容有任何错误或者不准确的地方,🤗🤗🤗欢迎在下面 👇👇👇 留个言指出、或者你有更好的想法,
欢迎一起交流学习❤️❤️💛💛💚💚

更多 好玩 好用 好看的干货教程可以 点击下方关注❤️ 微信公众号❤️
说不定有意料之外的收获哦..🤗嘿嘿嘿、嘻嘻嘻🤗!
🌽🍓🍎🍍🍉🍇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/456773.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

windows批处理脚本(cmd指令)

一、简介 最早期的电脑系统是DOS系统&#xff0c;DOS系统只有一个黑漆漆的窗口&#xff0c;需要自己输入命令&#xff0c;所以学习命令是很有必要的&#xff0c;那么CMD命令大全是什么?直到今天的Windows系统&#xff0c;还是离不开DOS命令的操作。如今懂得使用windows批处理脚…

vue解决:this.$refs引用子组件报错 is not a function

我这里有三个可能 可能是你的解决问题的办法&#xff1a; 1.如果你是想跳转到某个页面发现出现此问题&#xff1a; 那是因为你么有导出 2.可能是你的import引入的指定文件的路径有问题 3.你在你跳转的新的页面么有对应的方法

Self-supervised Contextual Keyword and Keyphrase Retrieval with Self-Labelling

文章目录 题目摘要方法数据集实验 题目 通过自我标记进行自我监督的上下文关键字和关键词短语检索 论文地址&#xff1a;https://www.preprints.org/manuscript/201908.0073/v1 项目地址&#xff1a;https://github.com/naister/Keyword-OpenSource-Data 摘要 在本文中&#x…

【SpringCloud微服务实战01】Eureka 注册中心

前言 在 Eureka 架构中&#xff0c;微服务角色有两类&#xff1a; EurekaServer &#xff1a;服务端&#xff0c;注册中心 记录服务信息 心跳监控 EurekaClient &#xff1a;客户端 Provider &#xff1a;服务提供者&#xff0c;例如案例中的 user-service …

docker 安装 RabbitMQ 安装 rabbitmq_delayed_message_exchange插件

docker 安装 RabbitMQ 1. 获取镜像 指定版本&#xff0c;该版本包含了web控制页面 docker pull rabbitmq:management2. 运行镜像 方式一&#xff1a;默认guest 用户&#xff0c;密码也是 guest docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:…

【绿色交通/运维功率/远程控制】安科瑞高速公路综合能效解决方案

行业背景 目前全国仍有900多个县没有国道覆盖&#xff0c;有18个新增的城镇人口在20万以上的城市和29个地级行政中心未实现与国家高速公路相连接。根据《规划》&#xff0c;普通国道将新建8000公里、升级改造10万公里&#xff0c;国家高速公路将新建2.5万至3.3万公里。未来的高…

【自动化测试】如何在jenkins中搭建allure

相信大家在做自动化测试过程中&#xff0c;都会用到自动化测试环境&#xff0c;目前最常见的就是通过容器化方式部署自动化测试环境&#xff0c;但对于一些测试小白&#xff0c;不是很会搭建持续集成环境&#xff0c;特别是从0-1的过程&#xff0c;需要自行搭建很多依赖环境&am…

ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。

发生的错误信息&#xff1a; File "C:\Users\malongqiang\.conda\envs\ObjectDetection\lib\ssl.py", line 1309, in do_handshakeself._sslobj.do_handshake() ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。 分析原因&#xff1a; …

kalman滤波python实现——基于维纳退化模型

参考文献&#xff1a; Si X S, Wang W, Hu C H, et al. A Wiener-process-based degradation model with a recursive filter algorithm for remaining useful life estimation[J]. Mechanical Systems and Signal Processing, 2013, 35(1-2): 219-237. 维纳过程模型&#xf…

前端基础篇-深入了解 JavaScript(一)

文章目录 1.0 JavaScript 概述 2.0 JS - 引入方式 3.0 JS - 基础语法 4.0 JS - 数据类型 5.0 JS - 函数 6.0 JS - Array 数组 7.0 JS - String 字符串 1.0 JavaScript 概述 JavaScript(简称&#xff1a;JS)是一门夸平台、面向对象的脚本语言。使用来控制网页行为&#xff0c;它…

主机 渗透

1&#xff1a;kali 靶机&#xff1a;Windows Server 2003 端口扫描 1.用nmap端口扫描靶机 nmap -sP 192.168.157.0/24 #扫描192.168.157.0这个网段存活的主机 靶机的IP为192.168.157.130 2 nmap -sV192.168.157.130 -p- #-sV 参数用于启用版本检测&#xff0c;192.168.…

【MySQL】锁信息

title: MySQL 锁信息 tags: MySQL abbrlink: 364637211 date: 2021-07-26 18:34:34 1 MySQL 锁定义 MySQL 锁&#xff08;Lock&#xff09;是数据库管理系统用于管理并发访问的一种机制。 在多用户同时访问数据库的环境下&#xff0c;可能会出现多个事务同时对相同的数据进行…

【C++ 】stack 和 queue

1. 标准库中的stack stack 的介绍&#xff1a; 1. stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行 元素的插入与提取操作 2. stack是作为容器适配器被实现的&#xff0c;容器适配器即是对特定类封装作为其…

linux系统对于docker容器的监控

容器监控 容器监控原生命令操作问题 容器监控三剑客CAdvisorInfluxDBGranfana compose编排监控工具新建目录创建CIG.yml文件启动docker-compose测试 容器监控 CAdvisorInfluxDBGranfana 原生命令 操作 docker stats问题 通过docker stats命令可以很方便的看到当前宿主机上所…

PostgreSQL YUM安装

docker中的centos7中安装 选择对应的版本然后在容器中的centos7中执行下面命令 但是启动容器的时候需要注意 开启端口映射开启特权模式启动init进程 docker run -itd --name centos-postgresql -p 5433:5432 --privilegedtrue centos:centos7 /usr/sbin/init 启动然后进入后先…

算法刷题Day9 | 28. 实现 strStr()、459.重复的子字符串、字符串总结

目录 0 引言1 实现 strStr()1.1 我的解题1.2 KMP算法解题 2 重复的子字符串2.1 暴力求解2.2 KMP求解法 3 字符串总结 &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;算法专栏&#x1f4a5; 标题&#xff1a;算法刷题Day8 | 28. 实现 strStr()、45…

[虚拟机]

如果你电脑的物理机器硬件强大, 由于一台物理机器只能运行一个操作系统, 那么就会造成物理机器硬件的浪费 虚拟机:使用虚拟化技术&#xff0c;将一台物理机器虑拟化为多台虚拟机器&#xff08;Virtual Machine, VM)&#xff0c;每个虚拟机器都可以独立运行一个操作系统 虚拟机…

WebAssembly探索篇(三)emcc和cmake编译opencv案例

文章目录 开发环境安装opencv环境 实践出真知完整项目效果图 踩坑fatal error: opencv2/opencv.hpp file not found增加软链ln&#xff08;无效&#xff09;改用自行安装opencv&#xff0c;再显示指定lib路径 emcc命令行运行方式 最近因为项目原因&#xff0c;研究了一下WebAss…

轻松驾驭时间流:MYSQL日期与时间函数的实用技巧

​&#x1f308; 个人主页&#xff1a;danci_&#x1f525; 系列专栏&#xff1a;《MYSQL应用》&#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 MySQL的时间函数用于处理日期和时间数据。以下是一些常用的MySQL时间函数。 内容有点多&#xff0…

一个H5页面中直接使用React的示例与说明

示例 如题&#xff0c;下面的个简单代码示例—在H5页面中直接使用React <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0&q…