XML-1
1.什么是XML
xml即 Extensible Markup Language,中文叫可扩展标记语言,是一种具有结构性的标记语言。
2.Xml文档的构成
XML文档即用xml语言编写的文档,它包括以下几部分:
2.1XML元素
XML元素由一个开始标记和一个结束标记,以及开始和结束标记之间的数据组成,如
<book>马克思主义</book>
注意:
1)XML是区分大小写的,比如<book> 和<BOOK>是两个不同的元素;
2)XML元素之间不允许重叠,即必须在父元素内关闭所有子元素,如下是错误的;
<book>
<title>马克思主义
<author>马克思
</title></author> <book>
正确的XML
<book>
<title>马克思主义</title>
<author>马克思</author>
<book>
3)所有元素都必须关闭,空元素<book></book>可以使用简短语法在开始标签关闭,如<book/>
4)XML文档只能有一个根元素,比如下面是错的
<? verson="1.0" ?>
<book>马克思主义</book>
<book>列宁主义</book>
5)元素和节点的区别:XML文档是由各个节点组成的,XML节点包括XML元素,XML声明,XML元素内的文本和特性等等。
2.2 特性
特性即元素的属性,比如
<book title='马克思主义'></book>
特性也是存储数据的一种方式,和在元素体内存储数据不同的是,在元素体内存储数据更易于阅读,而在特性中存储数据文档的大小会更小,因为使用特性减少了元素的换行和缩进。
2.3XML声明
xml声明用来声明文件的版本,使用的字符集和XML文档是否依赖其他文件,比如
<?xml verson ="1.0" encoding="utf-8" standalone="yes"?>
verson用于声明XML的版本,有1.0和1.1两个版本,xml维护组织建议使用1.0,.net只支持1.0版本;
encoding表示文档使用的字符集,standalone表示XML文档是否依赖其他文件,有yes、no两个值。
2.4 XML名称空间
在 XML 中,元素名称是由开发者定义的,当两个不同的文档使用相同的元素名时,就会发生命名冲突。
这个 XML 文档携带着某个表格中的信息:
<table>
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
这个 XML 文档携带有关桌子的信息(一件家具):
<table>
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>
假如这两个 XML 文档被一起使用,由于两个文档都包含带有不同内容和定义的 <table> 元素,就会发生命名冲突。
XML 解析器无法确定如何处理这类冲突。
参考http://www.w3school.com.cn/xml/xml_namespaces.asp
可以使用名称空间解决冲突问题,例如
<table xmlns:h="http://www.w3.org/TR/html4/">
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</table>
名称空间的定义方式:使用xmls特性:前缀="名称空间uri",定义了名称空间后就可以在其子元素中使用该前缀表示该元素是属于某个名称空间的。
也可以使用xmls定义默认的命名空间,不使用前缀
<table xmlns="http://www.w3.org/TR/html4/">
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
3.4XML应遵循的原则
1)有且只有一个根元素;
2)每一个元素都要进行关闭;
3)没有重叠的元素,所有的元素都要在父元素内关闭;
4)所有特性都要放在引号内
3.5使用XSD验证XML文档
3.5.1使用VS创建XSD
在VS项目中添加并编写好XML文档后可以让VS创建对应的XSD文档,如下图打开XML文件,在VS菜单上找到创建XSD菜单创建架构

创建好XSD后可以发现再次编辑对应的XML文件有提示了,因为VS自动把当前文件链接到刚刚创建的架构。
可以为一个XML文件链接几个架构,方法是打开XML文件->鼠标右键属性->架构,然后在下图中添加或者选中使用的架构

3.5.2 代码验证XML文件是否符合架构
<?xml version="1.0" encoding="utf-8" ?>
<stories>
<story ac="">
<title>A House in Aungier Street</title>
<author>
<name>Sheridan le Fanu</name>
<nationality>Irish</nationality>
</author>
<rating>eerie</rating>
</story>
<story ac ="">
<title>The Signalman</title>
<author>
<name>Charles Dickens</name>
<nationality>English</nationality>
</author>
<rating>atmospheric</rating>
</story> </stories>
public static string XmlValidationByXsd(string xmlFile, string xsdFile, string namespaceUrl = null)
{
StringBuilder sb = new StringBuilder();
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.Schemas.Add(namespaceUrl, xsdFile);
settings.ValidationEventHandler += (x, y) =>
{
sb.AppendFormat("{0}|", y.Message);
};
using (XmlReader reader = XmlReader.Create(xmlFile, settings))
{
try
{
while (reader.Read()) ;
}
catch (XmlException ex)
{
sb.AppendFormat("{0}|", ex.Message);
}
}
return sb.ToString();
}
string validMsg = XMLValidationByXsd(@"D:\文档\VS2010项目\XMLTest\XMLTest\XMLFile1.xml", @"D:\文档\VS2010项目\XMLTest\XMLTest\XMLFile1.xsd");
使用时把路径替换成自己的路径
参考https://www.cnblogs.com/gdjlc/archive/2013/09/08/3308229.html
XML-1的更多相关文章
- 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 ...
随机推荐
- 消息发送函数OSMboxPostOpt()
消息发送函数OSMboxPostOpt() 作用,ucos 3中的消息邮箱,具有广播功能,发送一条消息就可以使所有等待该消息的任务进入就绪状态,从而完成消息分发功能,具有一个消息唤醒多个任务的机制.
- socket支持ipv6
转自:https://www.jianshu.com/p/9926b99a7fef 以前cocos2d-x的项目里都使用的是libwebsocket,如果想支持ipv6,只需要升级相应的库即可,现在有 ...
- swoole实战1-初识swoole
原文地址:https://www.jianshu.com/p/008d5702d01f 安装swoole 以mac操作系统为例,如果你是mac新手,推荐阅读 程序员如何优雅使用mac 环境要求:php ...
- vs中调试程序查看变量在内存中的内容的方法
vs中调试程序 查看变量在内存中的内容的方法 https://blog.csdn.net/guojg1988/article/details/42922149 原文链接:http://www.sows ...
- 使用clion+cmake+vcpkg的开发现代的c++跨平台程序
使用clion+cmake+vcpkg的开发现代的c++跨平台程序 使用c++开发跨平台的程序 背景 在开发过程中,使用c++作为开发语言,通常被认为是痛苦的,啰嗦的,超长开发时间的.最近几年有各种各 ...
- docker使用1
1. 安装 可以参考https://www.runoob.com/docker/centos-docker-install.html 注意linux版本是centos7.6 2. docker启动,停 ...
- Win32API文本处理
工程模板:https://www.cnblogs.com/eternalmoonbeam/p/10793080.html 安全的文本输出方式: 需要额外包含头文件strsafe.h 依次使用以下三个函 ...
- Nvidia Jetson TX2开发板学习历程(1)- 详细开箱、上电过程
考试周已经结束了,开发板也已经到了.希望借着这个假期能够好好的利用这块开发板学习Linux系统以及Tensorflow的相关知识. 我打算将学习历程通过博客的方式写出来,作为自己的笔记,也可以供以后拿 ...
- 关于goquery的“non-standard import”错误
goquery运行缺包就用get github.com\andybalholm\cascadia下到gopath,然后出现“non-standard import”错误,说明github.com\an ...
- GIT讲解
一.什么是Git: Git是目前世界上最先进的分布式版本控制系统. 二.为什么要用版本控制系统: 1.更方便的存储版本 2.恢复之前的版本 3.更方便的进行对比 4.协同合作 三.如何安装GIT: 1 ...