首页 > 编程语言 >Java学习笔记XML(3)

Java学习笔记XML(3)

时间:2022-11-30 12:07:34浏览次数:73  
标签:XML 文件 Java xml 元素 笔记 约束 文档

XML简介

XML即可扩展的标记语言。因此该语言中所有的标签都是没有预先定义的,开发者可以自己随意的指定。

目前为止所有的标记的语言都属于开源的语言。由W3C组织进行一个基本的维护。

因此大家学习这些语言的时候应该参考W3C公布的文档。

XML作用

1.可以用作软件的配置文件。

2.可以实现独立平台的数据传输。 C à XML à Java   天气预报

3.Web Service。

4.可以描述带关系的数据。

 

XML体验

XML文件其实在实际的开发中可以帮助开发者进行描述一些带关系的数据。

 

 

 

 

 

 

 

 

 

 

 

 

以上的数据需要XML进行存储。

1. 编写一个city.xml文件如下

<?xml version="1.0" encoding="utf-8" standalone="yes"?>

<中国>

  <北京></北京>

  <上海></上海>

  <广州>

    <天河区></天河区>

    <花都区></花都区>

  </广州>

</中国>

另存为为UTF-8的编码方式。

2. 使用浏览器打开该应用文件

 

 

 

 

 

 

 

 

 

 

 

至此XML的体验就完成了。因此需要快速的掌握XML的语法基础。

XML语法

如果要掌握XML语言的语法结构那么可以从以下几个方面进行入手:

u  声明指令

语法:

<?xml version=””  encoding=””  standalone=”” ?>

xml 是一个xml文件的指令名通知解析器以XML的方式进行解析

version 指定XML的版本,目前只能是1.0

encoding 指定XML文件的被解析时候的解码方式,一般的值是GBK或UTF-8

standalone 指定该文件时否是独立文件。默认值是yes,也可是no

细节体验:

  1. <>和?号之间不能有任何字符包含空格
  2. ?和xml指令名之间不能有任何的字符包含空格
  3. 版本号只能是1.0
  4. 编码和解码要一致
  5. 三个属性出现的顺序是固定的;【version / encoding / standalone】

u  元素

语法:

<元素名></元素名>

元素名的组成:

   字母、数组、下划线和-

   不能以数字开头

元素的分类:

根元素       一个XML文件中只能有一个根元素包含其他元素

<a></a>      带标签体的元素

<br/>       没有带标签体的元素,空元素

使用细节:

  1. XML是严格区分大小写的,对于元素、属性以及其他的指令。
  2. XML的元素是可以相互嵌套的
  3. 元素是先开始的后结束

u  属性

语法:

<元素名 属性名1=属性值1 属性名2=属性值2  …>

属性名的约束和元素的约束一致

属性值在设置的时候需要使用单引号或双引号引起来。

举例1:实现一个书的isbn属性。

<?xml version="1.0" encoding="utf-8"  standalone="yes"?>

<books>

  <book isbn="001">

     <name>XML基础教程</name>

  </book>

</books>

属性只是为了给一个元素添加一个标识,那么该标识使用子元素也可以。

<?xml version="1.0" encoding="utf-8"  standalone="yes"?>

<books>

  <book isbn="001">

     <name>XML基础教程</name>

  </book>

  <book>

     <isbn>002</isbn>                      à 子元素等价于属性

     <name>XML基础教程</name>

  </book>

</books>

u  特殊字符和CDATA区域

如果在编写XML文件的时候发现属性值或元素的标签体内容要输出具有特殊含义的字符,那么必须使用转义字符(实体)。

常用的转义字符

 

 

 

 

 

 

 

 

 

 

但是如果在标签体中大量的出现特殊字符,那么如果要使用转移字符那么就太繁琐了。

解决方案:CDATA区域

语法:

<![CDATA[

   // 需要转移的大量字符数据

]]>

举例1:将以下的数据进行快速的转义。

<?xml version="1.0" encoding="utf-8"  standalone="yes"?>

<books>

  <book isbn="00&quot;1">

     <name>XML基础教程</name>

  </book>

  <book>

     <isbn>002</isbn>

     <name>XML基础教程</name>

     <content>

       <![CDATA[

        <html>

          <head>

          </head>

          <body>

          </body>

        </html>

       ]]>

     </content>

  </book>

</books>

u  注释

语言

注释

HTML

<!--    -->

CSS

/*   */

JavaScript

//   /*   */

Java

//   /*  */    /**  */

XML

<!--   -->

JSP

<%--    --%>

举例1:给xml文件添加注释。

<!--XML文件声明-->

<?xml version="1.0" encoding="utf-8"  standalone="yes"?>

<!--唯一的一个根元素-->

<books>

  <!--一个book代表一本书-->

  <book isbn="001">

     <name>XML基础教程</name>

  </book>

</books>

运行结果

 

 

 

 

 

 

 

 

 

u  样式指令

如果开发者希望浏览器在解析的XML数据的时候以指定的样式显示XML数据,那么就需要使用样式指令来设置XML的样式文件。

语法:

<?xml-stylesheet  type=”text/css”  href=”路径”?>

1. 编写一个books.xml文件

<?xml version="1.0" encoding="utf-8"  standalone="yes"?>

<books>

  <book>

     <id>0001</id>

     <name>XML基础教程</name>

     <author>焦宁波</author>

  </book>

  <book>

     <id>0002</id>

     <name>JavaEE高级教程</name>

     <author>焦宁波</author>

  </book>

</books>

2. 编写一个CSS样式文件

 

如果开发者没有编写指定的CSS文件但是已经使用了该指令引入的样式,那么浏览器会使用自身的默认的样式来显示XML数据。

默认的结果下:

 

 

编辑css样式如下

book{

  background:#ff0000;

  display:block;

  margin-bottom:10px;

  width:100px;

    }

id,name,author{

  display:block;

  background:pink;

  color:blue;

    }

需要另存为为UTF-8。

运行结果

 

 

 

 

 

 

 

 

格式良好的XML和有效的XML文档

格式良好的XML即满足基本的XML语法的XML文档称之为格式良好的XML文档。

有效的XML文档即该文件的格式需要满足一定的约束文件。

约束文档是一个要制定约束规则的文件。

被约束文档是一个需要被约束的XML文件。

如果想使用约束文件约束被约束文件那么就需要在被约束文件中引入约束文件。

思考:

格式良好的XML不一定是有效的XML文档。

有效的XML文档一定是格式良好的XML文档。

XML约束技术

W3C提供了常用的约束技术来实现XML文档的约束。常用的技术有DTD(W3C推荐的官方约束标准技术),但是该技术已经过时了,所以民间有另一个约束技术Schema(民间标准)。

DTD约束

DTD即Document Type Definded(文档类型定义)。该技术所形成的约束文件必须以.dtd进行结尾,该文件并不是一个XML文件。是一个普通的文本文件。

u  体验

  1. 编写一个测试的xml文件test.xml

<?xml version="1.0" encoding="utf-8" standalone="no"?>

<书架>

  <书>

     <书名>Java就业培训教程</书名>

     <作者>张孝祥</作者>

     <售价>39.00元</售价>

  </书>

  <书>

     <书名>JavaScript网页开发</书名>

     <作者>张孝祥</作者>

     <售价>28.00元</售价>

  </书>

</书架>

  1. 编写一个约束文件制定要约束的规则test.dtd

<!ELEMENT 书架 (书+)>

<!ELEMENT 书 (书名,作者,售价)>

<!ELEMENT 书名 (#PCDATA)>

<!ELEMENT 作者 (#PCDATA)>

<!ELEMENT 售价 (#PCDATA)>

dtd文件约束的被约束文件编码是UTF-8,因此需要将约束文件另存为为UTF-8。

3. 在被约束文件中引入约束文件进行语法的约束

<?xml version="1.0" encoding="utf-8" standalone="no"?>

<!--引入约束文件-->

<!DOCTYPE 书架 SYSTEM "test.dtd">

<书架>

  <书>

     <书名>Java就业培训教程</书名>

     <作者>张孝祥</作者>

     <售价>39.00元</售价>

  </书>

  <书>

     <书名>JavaScript网页开发</书名>

     <作者>张孝祥</作者>

     <售价>28.00元</售价>

  </书>

</书架>

4. 使用浏览器进行查看是否满足指定的约束

浏览器虽然提供了查看一个XML文件是否满足指定的约束,但是开发者需要使用程序打开该功能。HTML+CSS+JavaScript

编写一个页面进行XML的有效性校验validate.html

<script>

// 获取校验器对象

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")

// 设置是否是异步

xmlDoc.async="false"

// 打开校验的开关

xmlDoc.validateOnParse="true"

// 加载被约束的XML文件

xmlDoc.load("test.xml")

// 校验的结果

document.write("<br>Error Code: ")

// 输出校验的错误码

document.write(xmlDoc.parseError.errorCode)

document.write("<br>Error Reason: ")

// 输出校验的错误原因

document.write(xmlDoc.parseError.reason)

document.write("<br>Error Line: ")

// 定位错误的行号

document.write(xmlDoc.parseError.line)

</script>

5. 运行浏览器打开校验的页面

如果现实如下说明校验成功

 

 

 

 

 

 

如果现实如下的信息说明不满足规则

 

 

 

 

 

 

 

 

J多学一招: 查看专业的软件开发中配置文件?

<web-app xmlns="http://java.sun.com/xml/ns/javaee"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation=​​http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd​​   à 引入约束文件

    version="2.5">

DTD语法

u  引入约束文件

u  DTD基本语法

Schema约束

 

Schema语法

u  引入约束文件

u  DTD基本语法

总结

熟练掌握XML的基本语法结构即可。

了解DTD和Schema的语法规则

掌握约束文件的引入方法(Spring框架)

源码面前,了无秘密



标签:XML,文件,Java,xml,元素,笔记,约束,文档
From: https://blog.51cto.com/zhenghongxin/5898188

相关文章

  • php中的XML DOM(10)
    1.PHPDOM(1)Php中的DOM跟javascript不一样,属性不用另外增加一个节点2.主要类    DOMDocument:文档类    DOMNodeList:节点列表类    DOMNode:节点类   ......
  • Java中将double转换为int
    可以通过三种方式将double转换为int1、将double转换为int—使用类型转换2、将double转换为int—使用Math.round()3、将double转换为int—使用Double.IntValue()1.......
  • 你必须要知道的JavaScript数据结构与面试题解答
    英文原文|https://dev.to/educative/7-javascript-data-structures-you-must-know-4k0m原文作者|RyanThelin和AmandaFawcett译文翻译|web前端开发(web_qdkf)解决编码......
  • 藏家林老师HCIP/HCIE mybase笔记分享!
    藏家林老师教学的HCIP/HCIEmybase笔记,下载直接打开就能使用,内容十分的全面,欢迎转发点赞!HCIE和HCIE和笔记百度云链接:  https://pan.baidu.com/s/1ZGXgSvkYIBYrZDRzVMf......
  • 如何使用函数式编程写更简洁的JavaScript代码
    英文| https://dev.to/r0r71z/javascript-write-cleaner-code-with-functional-programming-279a翻译|web前端开发(ID:web_qdkf)作为一个Web全栈开发人员,我花了很多时间......
  • 从零启动一个JAVA SSM项目详细步骤目录
    详解大型互联网项目服务端架构演进历程JAVA环境配置​​1、Linux软件源配置操作​​​​2、Linux系统jdk安装实操​​​​3、Linux系统tomcat安装​​​​4、Linux下Maven......
  • 这8个很棒的JavaScript测试库,你可以尝试用起来
    英文| https://medium.com/better-programming/8-awesome-javascript-testing-libraries-43e09141fdc2翻译|web前端开发(ID:web_qdkf)测试代码是任何大型公司或项目的强......
  • JavaScript入门①-基础知识筑基
    01、JavaScript基础知识JavaScript(缩写:JS)是一种具有面向对象能力的、解释型的程序语言,基于对象和事件驱动,具有相对安全性的客户端脚本语言。JavaScript是一门完备的动态......
  • 李宏毅机器学习笔记:从0到写AI
    part1.基本介绍1.机器学习的三个任务一般情况下,我们在机器学习中有三个基本任务,分别是RegressionClassification和StructuredRegression是计算数值解而Classification......
  • Effective C++试读笔记
    Part1习惯C++1.视C++为一个语言联邦C++非常的屌,除了开发效率和编译效率不高,其他的都非常屌C++可以视为一系列的语言联邦构成的紧密结合体,分为以下四个部分C2.C......