XML文档操作

article/2025/10/12 3:38:20

文章目录

    • @[toc]
  • XML概述
    • 代码示例
  • CSS格式化XML
          • 为什么要用CSS样式表:
    • 代码示例:
    • 代码详解:
  • XSLT转化XML
    • XSLT简介:
    • 代码示例
    • 代码详解:
      • 正确的样式表声明
      • 从XML里提取数据
      • 节点匹配
  • DOM解析XML
    • XML DOM简介
      • 节点
    • 代码示例
    • 代码详解
      • 节点
      • XML DOM 节点树
      • 加载函数
      • 遍历XML文档数据

XML概述

  • XML 被设计用来传输和存储数据。
  • XML 仅仅是纯文本
  • XML 允许创作者定义自己的标签和自己的文档结构。
  • XML 不是对 HTML 的替代,而是对 HTML 的补充。
  • XML 是独立于软件和硬件的信息传输工具。
  • XML 是 W3C 的推荐标准

代码示例

<?xml version="1.0" encoding="utf-8"?>
<students><student><sn>201709000123</sn><name>张嘉佳</name><sex>女</sex> <nation>汉族</nation><address>湖北武汉</address><profession>英语</profession></student><student><sn>201709000124</sn><name>李文斌</name><sex>男</sex> <nation>傣族</nation><address>云南昆明</address><profession>建筑</profession></student><student><sn>201709000548</sn><name>王香凝</name><sex>女</sex> <nation>苗族</nation><address>四川成都</address><profession>音乐</profession></student><student><sn>201709000789</sn><name>张文煊</name><sex>女</sex> <nation>汉族</nation><address>广东广州</address><profession>语言</profession></student></students>

这个简单的XML文档类似于C语言中的结构体对象

CSS格式化XML

为什么要用CSS样式表:

在浏览器中打开XML文档时,如果没有为XML指定样式表,浏览器将会使用默认样式显示XML,
而且,XML没有预定义的<style>标记,也没有预定义的<style>和class属性
所以当我们需要自定义一种XML输出样式时,就需要自定义一个外部CSS样式表;

代码示例:

XML部分:Css-xml.xml

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="cssformat.css"?>			
<students><h2>XSLT转化XML</h2><student><sn>201709000123</sn><name>张嘉佳</name><sex>女</sex> <nation>汉族</nation><address>湖北武汉</address><profession>英语</profession></student><student><sn>201709000124</sn><name>李文斌</name><sex>男</sex> <nation>傣族</nation><address>云南昆明</address><profession>建筑</profession></student><student><sn>201709000548</sn><name>王香凝</name><sex>女</sex> <nation>苗族</nation><address>四川成都</address><profession>音乐</profession></student><student><sn>201709000789</sn><name>张文煊</name><sex>女</sex> <nation>汉族</nation><address>广东广州</address><profession>语言</profession></student>
</students>

CSS部分: cssformat.css

students{border-collapse: collapse;display: table;	margin: auto;margin-top: 24px;
}
student{display:table-row;line-height: 24px;}
sn, name, sex, nation, address, profession{display:table-cell;border:1px solid;padding: 6px;
}
txt{font-style: normal;font-weight: bolder;font-size: x-large;line-height: 24px;text-align: left;margin-top: 20px;
}

运行结果:
在这里插入图片描述

代码详解:

  • 在上面的 XML 中,根节点是 。文档中的所有其他节点都被包含在 中。

    根节点 有四个 节点。

    第一个 节点六个节点:<sn>, <name>, <sex>,<natiion>,<address>以及 <profession>,其中每个节点都包含一个文本节点,“201709000123”, “张嘉佳”, “女” 以及 "汉族"等。

XMl文档中引用外部样式表的格式是:

<?xml-stylesheet type="text/css" href="cssformat.css"?>	

注意:

  • type=“text/css” 注意在引用外部CSS时,text/后应为css(它也可能为JavaScript、xsl等)
  • href=“cssformat.css” 注意文件名
    CSS文件中的书写格式与HTML中的<style>一样
    更多CSS属性详解CSS 参考手册

XSLT转化XML

XSLT简介:

  • XSLT 指 XSL 转换(XSL Transformations)。
  • XSLT 是 XSL 中最重要的部分。
  • XSLT 可将一种 XML文档转换为另外一种 XML 文档。
  • XSLT 使用 XPath 在 XML 文档中进行导航。
  • 所有主流的浏览器都支持 XML 和 XSLT。
  • XPath 是一个 W3C 标准。

代码示例

`XML部分:xslt-xml.xml

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="xsltformat.xsl"?><students><student><sn>201709000123</sn><name>张嘉佳</name><sex>女</sex> <nation>汉族</nation><address>湖北武汉</address><profession>英语</profession></student><student><sn>201709000124</sn><name>李文斌</name><sex>男</sex> <nation>傣族</nation><address>云南昆明</address><profession>建筑</profession></student><student><sn>201709000548</sn><name>王香凝</name><sex>女</sex> <nation>苗族</nation><address>四川成都</address><profession>音乐</profession></student><student><sn>201709000789</sn><name>张文煊</name><sex>女</sex> <nation>汉族</nation><address>广东广州</address><profession>语言</profession></student>
</students>

XSLT部分: xsltformat.xsl

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/"><html><head><meta charset="utf-8"/><title>XTSL转化XML</title></head><body><h2 align="center">XSLT转化XML</h2><table border="1" cellpadding="6" align="center"><caption>studentlist</caption><tr><th>学号</th><th>姓名</th><th>性别</th><th>民族</th><th>籍贯</th><th>专业</th></tr><xsl:for-each select="students/student"><tr><td align="center"><xsl:value-of select="sn"/></td><td align="center"><xsl:value-of select="name"/></td><td align="center"><xsl:value-of select="sex"/></td><td align="center"><xsl:value-of select="nation"/></td><td align="center"><xsl:value-of select="address"/></td><td align="center"><xsl:value-of select="profession"/></td></tr></xsl:for-each></table></body></html></xsl:template>
</xsl:stylesheet>

运行结果:
在这里插入图片描述

代码详解:

  • 在上面的 XML 中,根节点是 。文档中的所有其他节点都被包含在 中。

    根节点 有四个 节点。

    第一个 节点六个节点:<sn>, <name>, <sex>,<natiion>,<address>以及 <profession>,其中每个节点都包含一个文本节点,“201709000123”, “张嘉佳”, “女” 以及 "汉族"等。

XMl文档中引用外部样式表的格式是:

<?xml-stylesheet type="text/xsl" href="xsltformat.xsl"?>

注意:

  • type=“text/xsl” ,text/后应为xsl
  • href=“xsltformat.xsl” 注意文件名

正确的样式表声明

把文档声明为 XSL 样式表的根元素是 <xsl:stylesheet><xsl:transform>

注释: <xsl:stylesheet><xsl:transform> 是完全同义的,均可被使用!
根据 W3C 的 XSLT 标准,声明 XSL 样式表的正确方法是:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

或者:

<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

如需访问 XSLT 的元素、属性以及特性,我们必须在文档顶端声明 XSLT 命名空间

从XML里提取数据

在XSLT中通常需要将XML中的内容复制到文档中,XSLT提供了value-of元素可实现该功能,格式:
<xsl:value-of select="name"/>
select后面为指定的XML中的节点 **“.”**表示选取钙元素下的所有元素(当前节点无嵌套元素除外)
XSLT xsl:template 元素
XSLT xsl:value-of 元素
XSLT xsl:for-each 元素

节点匹配

  1. 匹配根节点 <xsl:template match="/">
  2. 匹配元素名 <xsl:value-of select="name1"/> <xsl:for-each select="name1/name2"/>
  3. 匹配后代节点 <xsl:value-of select="//name1"/>
  4. 通过ID匹配节点 <xsl:value-of select="ID(09000532)"/>
  5. 通过I匹配属性@ <xsl:value-of select="name1/@atter"/>
  6. 通过多个节点 <xsl:value-of select="name1|name2"/>(用“|”分隔)
  7. 扩展匹配[] <xsl:value-of select="name1[@atter='value]"/>

DOM解析XML

XML DOM简介

在这里插入图片描述

  • XML DOM这种结构层次是根据XML文档生成的一颗节点树。
  • XML 文档中的每个成分都是一个节点。
  • XML DOM 是用于获取、更改、添加或删除 XML 元素的标准。

节点

根据 DOM,XML 文档中的每个成分都是一个节点。
DOM 是这样规定的:

  • 整个文档是一个文档节点
  • 每个 XML 标签是一个元素节点
  • 包含在 XML 元素中的文本是文本节点
  • 每一个 XML 属性是一个属性节点
  • 注释属于注释节点

代码示例

XML部分:Dom-xml.xml

<?xml version="1.0" encoding="utf-8"?>
<students><student><sn>201709000123</sn><name>张嘉佳</name><sex>女</sex> <nation>汉族</nation><address>湖北武汉</address><profession>英语</profession></student><student><sn>201709000124</sn><name>李文斌</name><sex>男</sex> <nation>傣族</nation><address>云南昆明</address><profession>建筑</profession></student><student><sn>201709000548</sn><name>王香凝</name><sex>女</sex> <nation>苗族</nation><address>四川成都</address><profession>音乐</profession></student><student><sn>201709000789</sn><name>张文煊</name><sex>女</sex> <nation>汉族</nation><address>广东广州</address><profession>语言</profession></student></students>

Dom部分:Domformat.html(Dom为HTML文件)

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>XML DOM应用</title>
</head>
<body>
<table border="1" align="center"><caption>使用DOM显示XML文挡</caption><tr><td>学号</td><td>姓名</td><td>性别</td><td>民族</td><td>籍贯</td><td>专业</td></tr><script type="text/javascript">var isie=true;var xmlDoc;try {xmlDoc=new ActiveXObject("Microsoft.XMLDOM");}catch(e) {isie=false;xmlDoc=document.implementation.createDocument("","",null);//}xmlDoc.async=false;xmlDoc.load("Dom-xml.xml");var stuList=xmlDoc.getElementsByTagName("student");for(var i=0; i<stuList.length; i++) {document.write("<tr>");var subList=stuList[i].childNodes;for(var j=0; j<subList.length; j++) {if(isie) {document.write("<td>" + subList[j].text + "</td>");}else {if(subList[j].nodeType==1) {document.write("<td>" + subList[j].textContent + "</td>");//}}}document.write("</tr>");} 
</script>
</table>
</body>
</html>

运行结果
在这里插入图片描述

注意:上述Dom案例代码只能在IE9+打开,否则只会出现表头(Dom无法解析XML文档中的内容)
如果出现这种情况,直接点击允许即可
在这里插入图片描述

代码详解

节点

  • 在上面的 XML 中,根节点是 。文档中的所有其他节点都被包含在 中。

    根节点 有四个 节点。

    第一个 节点六个节点:<sn>, <name>, <sex>,<natiion>,<address>以及 <profession>,其中每个节点都包含一个文本节点,“201709000123”, “张嘉佳”, “女” 以及 "汉族"等。

XML DOM 节点树

XML DOM 把 XML 文档视为一种树结构。这种树结构被称为节点树。
可通过这棵树访问所有节点。可以修改或删除它们的内容,也可以创建新的元素。
这颗节点树展示了节点的集合,以及它们之间的联系。这棵树从根节点开始,然后在树的最低层级向文本节点长出枝条:

(借用W3School的图)

在这里插入图片描述

加载函数

XML DOM 含有遍历 XML 树以及访问、插入、删除节点的方法(函数)。
然后,在访问并处理 XML 文档之前,必须把它载入 XML DOM 对象。

xmlDoc.load("Dom-xml.xml");:加载XML

下面代码为了兼容浏览器

	try {xmlDoc=new ActiveXObject("Microsoft.XMLDOM");}catch(e) {isie=false;xmlDoc=document.implementation.createDocument("","",null);//}

加载函数整体:

try {xmlDoc=new ActiveXObject("Microsoft.XMLDOM");}catch(e) {isie=false;xmlDoc=document.implementation.createDocument("","",null);//}xmlDoc.async=false;xmlDoc.load("Dom-xml.xml");

遍历XML文档数据

var stuList=xmlDoc.getElementsByTagName("student");for(var i=0; i<stuList.length; i++) {document.write("<tr>");var subList=stuList[i].childNodes;for(var j=0; j<subList.length; j++) {if(isie) {document.write("<td>" + subList[j].text + "</td>");}else {if(subList[j].nodeType==1) {document.write("<td>" + subList[j].textContent + "</td>");//}}}document.write("</tr>");} 

XML DOM Document 对象


http://chatgpt.dhexx.cn/article/nY1441j1.shtml

相关文章

XML文件的DOCTYPE定义

2019独角兽企业重金招聘Python工程师标准>>> DOCTYPE的常用声明&#xff1a;按照 HTML 4.01 XHTML 1.0 XHTML 1.1 列表如下&#xff0c;错误的DOCTYPE HTML PUBLIC反而会导致页面解析错误。HTML 4.01规范分为&#xff1a;Strict, Transitional, Frameset <!DO…

XML的内容

XML简介&#xff1a; XML是跨平台的语言&#xff0c;它不需要安装任何环境的语言&#xff0c; 它是所有语言所共有的&#xff0c;单独的语言&#xff0c;并且不是所有语言内部的。 它是让所有语言去和xml交互 。 注意&#xff1a; html前身是xml <></>&#xff0…

xml的介绍、xml的示例文件、xml语法介绍

xml的介绍 xml是可扩展的标记性语言 xml的主要作用&#xff1a; 1.用来保存数据&#xff0c;而且这些数据具有自我描述性 2.它可以作为项目或者模块的配置文件 3.还可以做网络传输的格式(现在以JSON为主) xml的示例文件 先创建一个文件 文件命名为xxx.xml 在xml文件中书写内…

XML文件简介

XML基本概念 单独的数据,它的含义很模糊。所以数据+含义,适用于传输数据,而不是显示数据(HTML)XML(eXtensible Markup Language),可扩展标记语言:意义+数据标签可自定义,具有自描述性纯文本文件,跨系统/平台/语言W3C标准(1998年,发布XML1.0,包括几乎所以的Unicode…

XML(一)

一&#xff0c;XML简介 XML&#xff08;EXtensible Markup Language&#xff09;&#xff1a;可扩展标记语言 XML 是一种很像HTML的标记语言。 XML 的设计宗旨是传输数据&#xff0c;而不是显示数据。 XML 标签没有被预定义。您需要自行定义标签。 XML 是 W3C 的推荐标准。…

XML文档基础及其解析

一、XML1. 概念&#xff1a;Extensible Markup Language 可扩展标记语言* 可扩展&#xff1a;标签可以自定义的。<user>、<hobby>* 功能1. 存储数据2. 在网络中传输2. XML和HTML的区别1. xml标签都是自定义的&#xff0c;html标签使预定于的2. xml的语言严格&#…

xml文件介绍

简介&#xff1a;本文主要讲解xml文件的格式&#xff0c;用途等等&#xff1b; xml概述 1.1初步认识一下xml 一段xml格式&#xff1a; 1.2什么是xml xml是传输和存储数据 html是展示数据 写一段xml文件&#xff0c;文件后缀为xml格式 所有内容必须需要一个根节点/根标签…

JavaWeb1-3学习总结(BootStrap,xml,tomcat,servlet)

1.1 BootStrap 1、概念 一个前端开发的框架&#xff0c;Bootstrap&#xff0c;来自 Twitter&#xff0c;是目前很受欢迎的前端框架。Bootstrap 是基于 HTML、CSS、JavaScript 的&#xff0c;它简洁灵活&#xff0c;使得 Web 开发更加快捷。 2、好处 定义了很多的css样式和j…

全面理解xml文件

XML XML相关概念 概述&#xff1a;Extensible Markup Language 可扩展标记语言 功能 ​ 存储数据 配置文件在网络中传输 xml和html的区别 XML标签都是自定义的&#xff0c;hmtl标签是预先定义的xml的语法严格&#xff0c;html语法松散XML是存储数据的&#xff0c;html是展示…

Java数组和方法

一、数组 1.定义&#xff1a;数组(array)是一种用于存储多个相同类型数据的存储模型。 格式1&#xff1a;数据类型[] 变量名 &#xff08;推荐使用&#xff09; 例子&#xff1a; int[ ] arr 定义了一个int类型数组&#xff0c;数组名是arr 格式2&#xff1a;数据类型 变量…

总结JS中常用的数组的方法大全

总结JS中常用的数组方法 JS中常用的数组方法总结 数组(Array)是一种复杂的数据类型&#xff0c;它属于Object(对象)类型&#xff0c;用来将一组数组合在一起&#xff0c;通过一个变量就可以访问一组数据。在使用数组时&#xff0c;经常会搭配循环语句使用&#xff0c;从而很方便…

17种数组常用方法

数组的常用方法&#xff08;内置方法&#xff1a;直接使用&#xff0c;只需按要求传递对应的参数&#xff09; 标红的为重点 一维数组&#xff1a;数组元素只有一个下标&#xff08;通过一个下标就可以定位数组中的元素&#xff09; 1.join(连接字符)&#xff1a;作用是将数…

Array数组的方法

1.Array.from() 将类数组结构转化为数组实例&#xff0c; 一参数是类数组对象即任何可迭代的结构&#xff0c;或者有一个length属性和可索引元素的结构 二参数是映射函数参数&#xff08;可选&#xff09;此函数可增强新函数的值&#xff0c; 三参数是指定映射函数中的this…

常用处理数组的方法

常用处理数组的方法 一、Es5 1.Arr.map() 数组中的每个元素会执行一次回调函数&#xff0c;结果作为一个新的数组返回&#xff0c;不改变原数组let arr [1, 2, 3, 4, 5] let newArr arr.map(x > {return x*2 // 将数组的每一项乘以2 }) console.log(newArr) // [2, 4, …

JS数组常用方法整理(14种常用方法)

目录 1.增 1.1 push(): 1.2 unshift(): 2.删 2.1 pop(): 2.2 shift() 3.改&#xff08;增、删&#xff09;&#xff1a; 3.1 splice() 4.查 4.1 slice() 5.将数组转换为字符串&#xff1a; 5.1 toString() 5.2 join() 6.数组拼接 6.1concat() 7.检测数组中是否包…

总结: 数组常用的方法

在实际开发当中, 数组和对象使用到最多的; 数组和对象有很多的方法, 这里主要探讨一下: 数组的增删改查数组的排序方式数组转换成其他数据类型的方式ES6数组新增常用的迭代方式 为什么需要数组? 数组可以存入不限数的数据, 并且可以使用下标值进行访问; 数据在数组的内部是有…

hive 宽表变竖表 长表变宽表

1.这是源数据以及需要转化的目标表. 我们的方法是 , 用 GROUP BY按照year分组 , 并且依次提取1月,2月,3月,4月的 num,具体实现 1 2 3 4 5 6 select year, max(case when month1 then money else 0 end) as M1, max(case when month2 then money else 0 end) as M2, max(case w…

【pandas】变形(长宽表变换)

变形 长宽表的变形 长表变宽表就是一个分类变量的多个值展开成多个变量&#xff0c;和哑变量变换有点相似&#xff0c;但不是0-1编码而是其他变量的值。 宽表变长表类似&#xff0c;多个类别可以化在一个分类变量下。 pivot pivot是一种典型的长表变宽表的函数&#xff0c;…

数据库设计--大宽表

宽表的概念 基本概念 宽表从字面意义上讲就是字段比较多的数据库表。通常是指业务主题相关的指标、维度、属性关联在一起的一张数据库表。 由于把不同的内容都放在同一张表存储&#xff0c;宽表已经不符合三范式的模型设计规范&#xff0c;随之带来的主要坏处就是数据的大量冗…

Flink cdc+ doris 大宽表实践~

还没整理好&#xff0c;别慌。 一&#xff0c;业务问题&#xff1a; 多个表关联join&#xff08;涉及时间维度跨度很长&#xff09;&#xff0c;几乎等同于全量关联&#xff0c;这个时候flink sql join没法做&#xff0c;因为state会无线增大&#xff0c;然后OOM。 二&#xf…