javaee之xml和dtd的基础练习

【JavaEE基础与高级 第62章】Java中的XML介紹使用、XML的约束、XML的解析、XPath使用 XML 的全称为(eXtensible Markup Language ),是一种可扩展的标记语言 * 标记语言 : 通过标签来描述数据的一门语言 * 可扩展 : 标签的名字是可以自定义的* 就是读取 XML 中的数据 * 解析方式 : * SAX 解析 * DOM 解析* 使用 Java 基础所学的 IO 知识是可以完成 XML 解析的,不过要非常繁琐的操作才可以完成,且开发中会遇到不同问题(只读、读写) 阅读详情

从昨天的学习中,我学习到了xml的基础知识,包括dtd的约束基础

一、首先 是关于dtd的联系,关于这部分我们知识需要了解能够根据dtd约束来写出xml文件即可

1)首先是dtd文件:

<!ELEMENT TVSCHEDULE (CHANNEL+)>
<!ELEMENT CHANNEL (BANNER,DAY+)>
<!ELEMENT BANNER (#PCDATA)>
<!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT+)+)>
<!ELEMENT HOLIDAY (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT PROGRAMSLOT (TIME,TITLE,DESCRIPTION?)>
<!ELEMENT TIME (#PCDATA)>
<!ELEMENT TITLE (#PCDATA)> 
<!ELEMENT DESCRIPTION (#PCDATA)>
<!ATTLIST TVSCHEDULE NAME CDATA #REQUIRED>
<!ATTLIST CHANNEL CHAN CDATA #REQUIRED>
<!ATTLIST PROGRAMSLOT VTR CDATA #IMPLIED>
<!ATTLIST TITLE RATING CDATA #IMPLIED>
<!ATTLIST TITLE LANGUAGE CDATA #IMPLIED>

2)然后根据dtd写出xml

TVSCHEDULE  :是根标签 里面有一个子元素 <span style="font-family: Arial, Helvetica, sans-serif;">CHANNEL </span>
<span style="font-family: Arial, Helvetica, sans-serif;"></span><pre name="code" class="html">CHANNEL :这个元素有 <span style="font-family: Arial, Helvetica, sans-serif;">BANNER,DAY这两个子元素</span>
<span style="font-family: Arial, Helvetica, sans-serif;"></span><pre name="code" class="html"><span style="font-family: Arial, Helvetica, sans-serif;">BANNER  :这个元素可以随便写字符串,因为 #PCDATA</span>
<span style="font-family: Arial, Helvetica, sans-serif;">DAY :这个元素中有 </span><span style="font-family: Arial, Helvetica, sans-serif;">DATE,HOLIDAY|PROGRAMSLOT 这几个子元素</span>
<span style="font-family: Arial, Helvetica, sans-serif;">HOLIDAY 和 DATE : 这两个元素都可以随便写字符串 </span>
<span style="font-family: Arial, Helvetica, sans-serif;"></span><pre name="code" class="html"><span style="font-family: Arial, Helvetica, sans-serif;">PROGRAMSLOT  :这里面有</span><span style="font-family: Arial, Helvetica, sans-serif;">TIME,TITLE,DESCRIPTION这几个子元素,也是可以写字符串</span>
<span style="font-family: Arial, Helvetica, sans-serif;"></span><pre name="code" class="html">TVSCHEDULE 的 NAME 属性 必须有,因为#REQUIRED<pre name="code" class="html">CHANNEL 的 CHAN 属性也是必须有<pre name="code" class="html">PROGRAMSLOT 的 VTR 属性、 <span style="font-family: Arial, Helvetica, sans-serif;">TITLE  的 RATING  属性 、  </span><span style="font-family: Arial, Helvetica, sans-serif;">TITLE 的 LANGUAGE  属性 是可选的,不一定必须有,因为#IMPLIED</span>
<span style="font-family: Arial, Helvetica, sans-serif;">
</span>
<span style="font-family: Arial, Helvetica, sans-serif;">3)、写出来之后便是</span>
<span style="font-family: Arial, Helvetica, sans-serif;"></span><pre name="code" class="html"><?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE TVSCHEDULE SYSTEM "xml_example.dtd">

<TVSCHEDULE NAME="acb">
	<CHANNEL CHAN="abc">
		<BANNER>abc</BANNER>
		<DAY>
			<DATE>abc</DATE>
			<HOLIDAY>abc</HOLIDAY>
			<HOLIDAY></HOLIDAY>
			<PROGRAMSLOT VTR="abc">
				<TIME>abc</TIME>
				<TITLE LANGUAGE="abc" RATING="abc">abc</TITLE>
				<DESCRIPTION>abc</DESCRIPTION>
			</PROGRAMSLOT>
		</DAY>
		
	</CHANNEL>
	
	
</TVSCHEDULE>










二、 今天还学习到有关xml读取加载的一些基本操作

1)首先有一个xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<Location>
    <State Name="北京" Code="11">
      <City Name="东城" Code="1" />
      <City Name="西城" Code="2" />
      <City Name="朝阳" Code="5" />
      <City Name="丰台" Code="6" />
      <City Name="石景山" Code="7" />
      <City Name="海淀" Code="8" />
</State>
    <State Name="天津" Code="12">
      <City Name="和平" Code="1" />
      <City Name="河东" Code="2" />
      <City Name="河西" Code="3" />
      <City Name="南开" Code="4" />
</State>
    <State Name="河北" Code="13">
      <City Name="石家庄" Code="1">
        <Region Name="长安区" Code="2" />
        <Region Name="桥东区" Code="3" />
        <Region Name="桥西区" Code="4" />
        <Region Name="新华区" Code="5" />
      </City>
 </State>
</Location>

2)、编写一个程序是用来加载xml文件的

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class xml_example1 {

	/**
	 * @param args
	 * @throws Exception 
	 */
	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		//查找xml,首先创建DocumentBuilderFactory实例
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		//通过DocumentBuilderFactory实例来创建DocumentBuilder实例
		DocumentBuilder builder = factory.newDocumentBuilder();
		//通过DocumentBuilder的实例调用parse的方法来读取xml文件
		Document doc = builder.parse("src/LocList.xml");

           test04(doc);
	}

//1、遍历所有的节点
	public static void test01(Document doc){
		Node item = doc.getElementsByTagName("Location").item(0);
		
		//调用子节点的递归函数
		getChilderNode(item);
	}


	private static void getChilderNode(Node node) {
		// TODO Auto-generated method stub
		//先得到当前的节点如果节点的类型是元素,则打印
		if(node.getNodeType() == Node.ELEMENT_NODE){
			System.out.println(node.getNodeName());
		}
		//再得到这个元素下的子元素遍历之,在递归
		NodeList nodeList = node.getChildNodes();
		for(int i=0;i<nodeList.getLength();i++){
			Node item = nodeList.item(i);
			getChilderNode(item);
		}
	}
	
	//2、查询某一个节点
		//2.1找寻名字为“东城”的节点和其他的属性
	public static void test02(Document doc){
		Element selement = (Element) doc.getElementsByTagName("State").item(0);
		Element celement = (Element) selement.getElementsByTagName("City").item(0);
		
		//System.out.println(celement.getTextContent());
		//得到了名为“东城”这个city下的Name属性和Code属性
		System.out.println(celement.getAttribute("Name"));
		System.out.println(celement.getAttribute("Code"));
	
		//得到City里面的文本内容
		int index = selement.getElementsByTagName("City").getLength();
		Element c = (Element) selement.getElementsByTagName("City").item(index-1);
		
		System.out.println(c.getTextContent());
	}
	
	
	//3、修改某一个节点
		//3.1添加一个State
	public static void test03(Document doc) throws Exception{
		Element element = doc.createElement("State");
		
		//3.2在state元素中添加属性Name和Code
		element.setAttribute("Name", "广东");
		element.setAttribute("Code", "120");
		
		//3.3在state中添加City和其他属性
		Element celement = doc.createElement("City");
		celement.setAttribute("Name","翁源");
		celement.setAttribute("Code", "515");
		celement.setTextContent("龙仙");
		
		element.appendChild(celement);
		
		Node root = doc.getElementsByTagName("Location").item(0);
		root.appendChild(element);
		
		//1、通过TransformerFactory来创建实例,调用newInstance方法
		TransformerFactory transformerFactory = TransformerFactory.newInstance();
		//2、通过TransformerFactory的实例来创建newTransformer对象
		Transformer transformer = transformerFactory.newTransformer();
		//3、用Transformer的对象的transform方法来修改xml文件
		transformer.transform(new DOMSource(),new StreamResult("src/LocList.xml"));
		
		
	}
	
	public static void test04(Document doc) throws Exception{

		Element selement = (Element) doc.getElementsByTagName("State").item(1);
		Element celement = (Element) selement.getElementsByTagName("City").item(6);
		celement.removeAttribute("Name");
		
		Element celement1 = (Element) selement.getElementsByTagName("City").item(7);
		selement.removeChild(celement1);
		
		//1、通过TransformerFactory来创建实例,调用newInstance方法
		TransformerFactory transformerFactory = TransformerFactory.newInstance();
		//2、通过TransformerFactory的实例来创建newTransformer对象
		Transformer transformer = transformerFactory.newTransformer();
		//3、用Transformer的对象的transform方法来修改xml文件
		transformer.transform(new DOMSource(),new StreamResult("src/LocList.xml"));
				
	}

}


通过这几个案例我能够基本了解到了,关于xml和dtd 的相关知识

DTD和XML学习(3)属性声明 NULL 博文链接:https://kevin-wanwei.iteye.com/blog/584000 立即下载

相关推荐

java常用dtd集合

java的struts2生成xml自动提示dtd

XML中DTD约束的基本知识与练习

首先,dtd是xml配置文件的约束技术中的一种。 1.xml的用途? 做配置 做数据传输 2.XML与HTML区别? html是超文本 xml是可拓展标记语言 xml能够通过字符串表示对象的结构 一,首先了解什么是格式良好的XML 1.1 有且只有一个根元素 1.2 XML标签大小写正确区分 1.3 正确使用结束标签 1.4 正确嵌套标签 1.5 使用了合法的标签名 1.6 定义有效的属...

尽力漂亮的博客 1007

基于Arduino UNO的OLED显示器使用方法x2(Arduino系列五)

Arduino使用OLED显示模块可以实现串口数据显示,还可以与其他模块联合使用,实现实时显示开发板实时数据。

LNN0212的博客 4171

XML

文章目录1. XML 的概念2. XML 的功能3. XML 和 HTML 的区别4. XML 基础语法5. XML 练习6. XML 组成部分7. 约束文档8. XML 解析9. jsoup 解析器的使用 1. XML 的概念 XML(Extensible Markup Language),可扩展标记语言。 可扩展:指标签都是用户自定义的。 标记语言:指由标签构成的语言,但标记语言不是编程语言。...

bm1998 344

保姆级图解:HKMG工艺中的‘覆盖层’(Cap Layer)到底怎么调阈值电压?

本文深入解析了HKMG工艺中覆盖层(Cap Layer)如何精准调控阈值电压的关键技术。通过原子级精度的ALD工艺和材料选择,覆盖层在半导体制造中扮演着隐形调节器的角色,直接影响晶体管的电气特性。文章详细介绍了La2O3和Al2O3等材料的特性对比、ALD工艺的原子级控制,以及实战调试中的关键步骤和问题排查方法。

weixin_27032989的博客 496

直流耦合系统介绍

参考《SMA如何使用直流耦合技术实现更高效的光伏电站-白皮书》

圆桌骑士的博客 732

DTD练习和schema练习

(1)dtd的配置 <?xml version="1.0" encoding="utf-8"?> <!ELEMENT NEWSPAPER (ARTICLE+)> <!ELEMENT ARTICLE (HEADLINE,BYLINE,LEAD,BODY,NOTES)> <!ELEMENT HEADLINE ...

liuzhenghui666666的博客 539

ArcFace vs 传统算法:实测MTCNN+ArcFace在PyCharm中的识别准确率(含完整对比数据)

本文通过PyCharm开发环境实测MTCNN+ArcFace组合在人脸识别中的性能表现,并与传统算法进行多维度对比。实验数据显示,ArcFace在LFW数据集上达到99.83%的准确率,显著优于传统方法。文章还提供了完整的代码实现和工程优化建议,为开发者提供实用的技术参考。

醉三国 233

DTD约束

XML文档声明:<?xml version="1.0" encoding="UTF-8">XMl约束: 在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束。常用的XML约束: 1.XML DTD 2.XML SchemaDTD约束:(Document Type Definition)引用DTD约束:1.当引用在本地时,采用如下方式:<!DOCTYPE

ShunXiangL的博客 2840

先进封装基础知识

想象一下,芯片就像是电脑或手机的大脑,但它非常脆弱,需要被保护起来。芯片封装就是给芯片穿上一件“保护衣”,这件“保护衣”不仅可以保护芯片,还能帮助芯片与外部世界进行沟通。

阿拉伯梳子的专栏 1144

使用C# HslCommunication库实现三菱PLC通信(含完整代码示例)

在工业自动化开发中,上位机与PLC的通信是关键环节。HslCommunication库是一个开源的.NET工业通信库,支持三菱、西门子、欧姆龙等多个品牌PLC的通信协议。本文将演示如何通过库实现C#程序与三菱PLC的通信,并提供完整的代码示例。

StevenChen的博客 2290

xml和dtd练习

目录 一、题目 二、答案 一、题目 1.编写一个employee.xml 其中保留员工的id,name,age,depName,salary,company,gender信息.        id必须有并且不能相同        name任意                    age可以不出现,不出现时有默认值20          depName只能在(市场部,教学部,教学管理部)...

elice_的博客 3543

以 DeleteRestrictions 与 inlineDelete 为核心的 Fiori Elements 表格删除机制全解

SAP Fiori elements 中删除操作的设计与实现涉及多维度考量。框架默认依据 OData 元数据判断删除能力,通过 DeleteRestrictions 注解实现行级条件控制(deletable-path)。表格支持两种删除模式:工具栏集中删除与响应式表格行内删除,但二者不建议混用。关键约束包括:行内删除仅适用于 Responsive Table,且与多选功能互斥。配置需遵循三层架构:后端能力注解、前端表格形态和运行时交互。设计上强调禁用优于隐藏的可用性原则,并需保持列表页与对象页的删除体验一致

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 153

JavaEE基础之- xml

xml文档约束是用另一个文件来约束xml文档的结构,例如要求xml文档的根元素必须是 <students> ,在 <students> 元素下可以包含0~n个 <student> 元素,每个 <student> 元素必须有一个number属性,而且还要有三个子元素,分别为<name>、<age>、<sex>,这三个子元素的内容必须为文本内容,而不能是子元素。一个应用程序如果需要DOM或SAX来访问XML文档,还需要一个实现了DOM或SAX的解析器,也就是说这个解析器需要实现DOM或SAX中定义的接口。

m0_75163045的博客 1439

手把手教你学simulink(12.10)--设计和仿真一个用于控制飞机纵向运动(高度和速度)的多变量控制系统

飞机的纵向运动控制是航空工程中的一个重要问题,涉及飞机的高度和速度的精确控制。多变量控制系统可以同时控制多个飞行参数,确保飞机在最佳条件下运行。Simulink提供了一个强大的平台,用于建模、仿真和分析动态系统,非常适合设计和测试多变量控制系统。通过本项目的实施,我们成功设计和仿真了一个用于控制飞机纵向运动(高度和速度)的多变量控制系统。该项目展示了从系统建模、控制器设计、仿真验证到结果分析的完整流程,为多变量控制系统的设计提供了有价值的参考。

MHD0815的博客 598

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

J2EE_02 快速入门 DTD

目录一、DTD 教程DTD 新闻实例二、DTD 简介内部的 DOCTYPE 声明外部文档声明为什么使用 DTD?三、DTD - XML 构建模块XML 文档构建模块元素实体PCDATACDATA四、DTD - 元素声明一个元素空元素只有 PCDATA 的元素带有任何内容的元素带有子元素(序列)的元素声明只出现一次的元素声明最少出现一次的元素声明出现零次或多次的元素声明出现零次或一次的元素声明"非.../即..."类型的内容声明混合型的内容五、DTD - 属性声明属性默认属性值#REQUIRED语法实例#IM

m0_60786924的博客 527

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

J2EE之XML_DTD

目录 一、什么是DTD? 二、什么是XML? 三、XML的两种文档约束 四、XML格式要求(合法XML) 五、使用DTD 1、 在XML中加入DTD申明 2、元素定义语法(DTD对元素的限制) 3、 属性定义语法(DTD对属性的限制) 4、特殊符号转义 5、案例...

m0_67768699的博客 239

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

XML—DTD、 Schema

ELEMENT 元素名(子元素名称)>举例:<!ELEMENT 书籍列表(计算机书籍)>在其他Schema中重复使用您的Schema创建由标准类型衍生而来的您自己的数据类型在相同的文档中引用多重的Schema。

一起加油吧~ 2742

J2EE之XML(dtd篇超详细)

属性名称必须以字母或下划线开头,不能以数字或标点符号开头。属性名称中不能包含空格或其他无效字符。属性值必须使用引号(单引号或双引号)括起来。如果属性值中包含了引号,它必须使用与属性值开始处相同的引号进行括起来。这里需要提一点的是:不仅属性值需要被引号括起来,而且属性名称也应该全部使用小写字母。这是因为XML对大小写是敏感的。如果属性名称不是小写字母,解析器可能会认为此属性不存在,从而引发解析错误。

kissship的博客 902

JavaEE——XML基础(XML、DTD、dom4j解析)

一、认识XML 1.1 XML简介 (1)xml:可扩展标记语言,是一种标记语言 (拿<>括起来的语言); (2)xml是一种灵活的语言,没有固定的标签,所有的标签都可以自定义(可扩展); (3)通常,xml被用于信息的记录和传递。——因为是一个普通的文本文件,通用性强,因此经常被用于充当配置文件。 1.2 XML的作用 (1)数据存储 (2)数据交换 (3)数据配置 1.3 XML的基本格式 <?xml version="1.0" encoding="UTF-8"?> <

qq_38596491的博客 384

J2EE基础:dtd及xml配置

dtd及xml配置

weixin_67465673的博客 466

J2ee基础xml介绍和DTD约束

学习目标: 熟练使用DTD编写格式良好的XML文件 学习内容: 1、 XML的介绍 xml是指可扩展标记语言(EXtensible MArkup Language) 可以联想到HTML这门语言,从HTML的类比介绍中,xml在早期的主要功能也是传输数据 以前接触xml也就是web项目中的web.xml配置servlet的信息和Tomcat中的server.xml修改Tomcat端口号。 2、xml的语法介绍(标签约束和属性约束) xml的语法介绍(eclipse) <?xml.

weixin_53905396的博客 200

J2EE基础:DTD

文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下(示例...

qq_54936371的博客 465

XML和J2EE的完美结合

当前,Java 2平台企业版(J2EE)架构在厂商市场和开发者社区中倍受推崇。作为一种工具,可扩展标记语言(XML)简化了数据交换、进程间消息交换这一类的事情,因而对开发者逐渐变得有吸引力,并开始流行起来。自然,在J2EE架构中访问或集成XML解决方案的想法也很诱人。因为这将是强大系统架构同高度灵活的数据管理方案的结合。 XML的应用似乎是无穷无尽的,但它们大致上可以分为三大类: ●简单数据的表示

!Java 2733

J2EE基础——DTD

说到DTD,那么什么是DTD呢? DTD:文档类型定义(Document Type Definition)是一套关于标记符的语法规则。是xml配置文件的约束技术中的一种。 在信息的高速的交流中 不同领域中的信息交互越来越紧密,在这些信息的传输过程中难免会发生一些错误导致信息的格式不一致,在传输的,这样我们可以用DTD来定义合法的XML文档结构。 DTD的优势:每一个XML文档都可以携带一个DTD,用来对该文档格式进行描述测试该文档是否是一个有效的XML文 根元素的声明 :每个XML文档都只有一个根

BAIQW的博客 313

J2EE dtd

1.什么是DTD? 文档类型定义(约束) 2.什么是XML? HTML:超文本标记语言 a/b/c/z XML:可扩展标记语言 3.XML的两种文档约束 DTD Schema 4.XML格式要求(合法XML) 1)有且只有一个根节点; 2)由开始标签和结束标签组成; 3)XML标签区分大小写; 4)正确嵌套标签; 5.使用DTD 5.1 在XML中加入DTD申明 1)内部申明: 2)外部申明:...

weixin_67780833的博客 447
上一篇: 学习javaee的第五天
下一篇: javaee关于dom4j对xml的基本认识
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值