XML认识
XML概念
XML是eXtensible Markup Langguage 缩写,称之为可扩展标记语言。XML 被设计用来传输和存储数据。与HTML不同的是:
HTML被设计用来显示数据,其焦点是数据的外观。
- XML被设计用来描述数据,其焦点是数据的内容。
- XML 标签没有被预定义。您需要自行定义标签。
- XML 被设计为具有自我描述性。
- XML 是 W3C 的推荐标准
XML的用途
XML 简化数据共享
XML 数据以纯文本格式进行存储,因此提供了一种独立于软件和硬件的数据存储方法。这让创建不同应用程序可以共享的数据变得更加容易。
XML 简化数据传输
通过 XML,可以在不兼容的系统之间轻松地交换数据。
XML 简化平台的变更
XML 数据以文本格式存储。这使得 XML 在不损失数据的情况下,更容易扩展或升级到新的操作系统、新应用程序或新的浏览器。
XML文档结构
XML 文档形成了一种树结构,它从“根部”开始,然后扩展到“枝叶”。
<?xml version="1.0" encoding="UTF-8"?>
<root>
<child>
<subchild>.....</subchild>
</child>
</root>
1.XML申明
<?xml version="1.0" encoding="ISO-8859-1"?>
申明必须在第一行,在其前面不能有空白、其他的处理指令或注释。
- 申明版本属性:目前该属性的值通常为1.0
- 声明编码属性:默认值UTF-8
2.根标记
XML文档中有且仅有一个根标记,其他标记都必须封装在根标记中。
3.树形结构
XML 文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端。所有元素均可拥有子元素,父、子以及同胞等术语用于描述元素之间的关系。
父元素拥有子元素。相同层级上的子元素成为同胞(兄弟或姐妹)。所有元素均可拥有文本内容和属性(类似 HTML 中)。
XML的语法
- 所有 XML 元素都须有关闭标签
- XML 标记对大小写敏感
- XML 标记命名必须以下划线或字母开头,"<"和标记名字 之间不要有空格。
- XML 必须正确地嵌套,形如:<b><i>This text is bold and italic</i></b>
- XML 文档必须有根标记
- XML 的属性值须加引号
- 在 XML 中,空格会被保留
- XML 中的注释:<!-- This is a comment -->
- 实体引用,在XML中的特殊字符应当用引用实体:
< |
< |
> |
> |
& |
& |
' |
' |
" |
" |
XML标记
标记由左尖括号(<)和右尖括号(>)以及之间的文本组成。有开始标记(例如 <name>)和结束标记(例如 </name>)。
XML 标记命名必须以下划线或字母,"<"和标记名字之间不要有空格。
XML 标记对大小写敏感
1.空标记
空标记以"<"标识开始,"/>"结束。可以有属性。
<chair width="24" height="12" />
2.非空标记
非空标记必须由“开始标记”和“结束标记”组成,成对出现。
开始标记"<"标识开始,">"结束。可以有属性。
结束标记以"</"开始,">"结束。不能有属性。
<T28>
<开车时间>20点58分</开车时间>
<终到时间>08点18分</终到时间>
</T28>
3.CDATA段
术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Data)。
CDATA段用"<![CDATA["开始,"]]>"结束。之间可以包含任意字符。但CDATA段不能嵌套。
<script>
<![CDATA[
function matchwo(a,b)
{
if (a < b && a < 0) then
{
return 1;
}
else
{
return 0;
}
}
]]>
</script>
在上面的例子中,解析器会忽略 CDATA 部分中的所有内容。
XML元素
元素是开始标记、结束标记以及位于二者之间的所有内容。元素的名字和属性就是该元素内最外层标记的名字和属性。
元素可包含其他元素、文本或者两者的混合物。元素也可以拥有属性。
<bookstore>
<book category="CHILDREN">
<title>Harry Potter</title>
<author>J K. Rowling</author>
</book>
<book category="WEB">
<title>Learning XML</title>
<author>Erik T. Ray</author>
</book>
</bookstore>
在上例中,<bookstore> 和 <book> 都拥有元素内容,因为它们包含了其他元素。<author> 只有文本内容,因为它仅包含文本。
在上例中,只有 <book> 元素拥有属性 (category="CHILDREN")。
XML命名空间
XML 命名空间提供避免元素命名冲突的方法。
命名冲突
假如这两个 XML 文档被一起使用,由于两个文档包含带有不同内容和定义的相同名字的元素,就会发生命名冲突。 XML 解析器无法确定如何处理这类冲突。
使用前缀来避免命名冲突
<h:table>
<h:tr>
<h:td>Apples</h:td>
</h:tr>
</h:table>
使用命名空间(Namespaces)
<f:table xmlns:f="http://www.XXX.com.cn/furniture">
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
</f:table>
XML Namespace (xmlns) 属性
XML 命名空间属性被放置于元素的开始标签之中,并使用以下的语法:
xmlns:namespace-prefix="namespaceURI"
当命名空间被定义在元素的开始标签中时,所有带有相同前缀的子元素都会与同一个命名空间相关联。
默认的命名空间(Default Namespaces)
为元素定义默认的命名空间可以让我们省去在所有的子元素中使用前缀的工作。
请使用下面的语法:xmlns="namespaceURI"
<table xmlns="http://www.w3.org/TR/html4/">
<tr>
<td>Apples</td>
</tr>
</table>
XML认识的更多相关文章
- XStream将java对象转换为xml时,对象字段中的下划线“_”,转换后变成了两个的解决办法
在前几天的一个项目中,由于数据库字段的命名原因 其中有两项:一项叫做"市场价格"一项叫做"商店价格" 为了便于区分,遂分别将其命名为market ...
- .NET Core采用的全新配置系统[9]: 为什么针对XML的支持不够好?如何改进?
物理文件是我们最常用到的原始配置的载体,最佳的配置文件格式主要由三种,它们分别是JSON.XML和INI,对应的配置源类型分别是JsonConfigurationSource.XmlConfigura ...
- WebApi接口 - 响应输出xml和json
格式化数据这东西,主要看需要的运用场景,今天和大家分享的是webapi格式化数据,这里面的例子主要是输出json和xml的格式数据,测试用例很接近实际常用情况:希望大家喜欢,也希望各位多多扫码支持和点 ...
- XML技术之DOM4J解析器
由于DOM技术的解析,存在很多缺陷,比如内存溢出,解析速度慢等问题,所以就出现了DOM4J解析技术,DOM4J技术的出现大大改进了DOM解析技术的缺陷. 使用DOM4J技术解析XML文件的步骤? pu ...
- UWP开发之Mvvmlight实践六:MissingMetadataException解决办法(.Net Native下Default.rd.xml配置问题)
最近完成一款UWP应用,在手机端测试发布版(Release)的时候应用莫名奇妙的强行关闭,而同样的应用包在PC端一点问题都没有,而且Debug版在两个平台都没有问题,唯独手机的Release版有问题. ...
- PHP中遍历XML之SimpleXML
简单来讲述一些XML吧,XML是可扩展标记语言,是一种用于标记电子文件使其具有结构性的标记语言.XML是当今用于传输数据的两大工具之一,另外一个是json. 我们在PHP中使用XML也是用来传输数据, ...
- Asp.Net 操作XML文件的增删改查 利用GridView
不废话,直接上如何利用Asp.NET操作XML文件,并对其属性进行修改,刚开始的时候,是打算使用JS来控制生成XML文件的,但是最后却是无法创建文件,读取文件则没有使用了 index.aspx 文件 ...
- Mybatis XML配置
Mybatis常用带有禁用缓存的XML配置 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE ...
- Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)
Android XML shape 标签使用详解 一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...
- C#反序列化XML异常:在 XML文档(0, 0)中有一个错误“缺少根元素”
Q: 在反序列化 Xml 字符串为 Xml 对象时,抛出如下异常. 即在 XML文档(0, 0)中有一个错误:缺少根元素. A: 首先看下代码: StringBuilder sb = new Stri ...
随机推荐
- 问题:Bringing up interface eth0: Device eth0 does not seem to be present,delaying initialization. [FAILED]—— 找不到网卡。
克隆虚拟机的时候或其他情况出现以下问题(命令service network restart): Bringing up interface eth0: Device eth0 does not ...
- JVM学习笔记-运行时数据区
不同于C,C++程序,Java程序的内存管理工作由Java虚拟机(JVM)接管,这减低了java程序员的负担,但如果出现内存泄露与溢出问题如报OutOfMemory,StackOverFlow异常错误 ...
- EF+WCF怎样更新数据?
public virtual void Update(T entity) { T current = this.Where(m => m.Id.Equals(entity.Id)) .Singl ...
- winform程序开机自动启动代码
几天前头儿要我实现程序能开机自动启动,搞好了,整理起来写下来. private void checkBox1_CheckedChanged(object sender, EventArgs e) { ...
- PHP 常用命令
php常用命令: #输出语句 $ php -r "echo '123' . PHP_EOL;" #执行php脚本文件 $ php -f file.php #查看版本号 $ ph ...
- Android性能分析工具介绍
1. Android系统性能调优工具介绍 http://blog.csdn.net/innost/article/details/9008691 TraceviewSystraceOprofile 2 ...
- 【python】【转】Python生成随机数的方法
如果你对在Python生成随机数与random模块中最常用的几个函数的关系与不懂之处,下面的文章就是对Python生成随机数与random模块中最常用的几个函数的关系,希望你会有所收获,以下就是这篇文 ...
- Mac Pro的HDMI接口与WI-FI可能存在冲突的解决方法
当我将Mac Pro通过HDMI->DVI转接头接上一台显示器时,正在使用的WI-FI网络立马不能使用,重新连接网络也不行,但断开HDMI连接后,WI-FI立马恢复正常. 在网上查,在apple ...
- servlet跳转jsp
ackage com.monkey.servlet; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; im ...
- net Core 通过 Ef Core 访问、管理Mysql
net Core 通过 Ef Core 访问.管理Mysql 本文地址:http://www.cnblogs.com/likeli/p/5910524.html 环境 dotnet Core版本:1. ...