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的更多相关文章

  1. XStream将java对象转换为xml时,对象字段中的下划线“_”,转换后变成了两个的解决办法

            在前几天的一个项目中,由于数据库字段的命名原因 其中有两项:一项叫做"市场价格"一项叫做"商店价格" 为了便于区分,遂分别将其命名为market ...

  2. .NET Core采用的全新配置系统[9]: 为什么针对XML的支持不够好?如何改进?

    物理文件是我们最常用到的原始配置的载体,最佳的配置文件格式主要由三种,它们分别是JSON.XML和INI,对应的配置源类型分别是JsonConfigurationSource.XmlConfigura ...

  3. WebApi接口 - 响应输出xml和json

    格式化数据这东西,主要看需要的运用场景,今天和大家分享的是webapi格式化数据,这里面的例子主要是输出json和xml的格式数据,测试用例很接近实际常用情况:希望大家喜欢,也希望各位多多扫码支持和点 ...

  4. XML技术之DOM4J解析器

    由于DOM技术的解析,存在很多缺陷,比如内存溢出,解析速度慢等问题,所以就出现了DOM4J解析技术,DOM4J技术的出现大大改进了DOM解析技术的缺陷. 使用DOM4J技术解析XML文件的步骤? pu ...

  5. UWP开发之Mvvmlight实践六:MissingMetadataException解决办法(.Net Native下Default.rd.xml配置问题)

    最近完成一款UWP应用,在手机端测试发布版(Release)的时候应用莫名奇妙的强行关闭,而同样的应用包在PC端一点问题都没有,而且Debug版在两个平台都没有问题,唯独手机的Release版有问题. ...

  6. PHP中遍历XML之SimpleXML

    简单来讲述一些XML吧,XML是可扩展标记语言,是一种用于标记电子文件使其具有结构性的标记语言.XML是当今用于传输数据的两大工具之一,另外一个是json. 我们在PHP中使用XML也是用来传输数据, ...

  7. Asp.Net 操作XML文件的增删改查 利用GridView

    不废话,直接上如何利用Asp.NET操作XML文件,并对其属性进行修改,刚开始的时候,是打算使用JS来控制生成XML文件的,但是最后却是无法创建文件,读取文件则没有使用了 index.aspx 文件 ...

  8. Mybatis XML配置

    Mybatis常用带有禁用缓存的XML配置 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE ...

  9. Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)

    Android XML shape 标签使用详解   一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...

  10. C#反序列化XML异常:在 XML文档(0, 0)中有一个错误“缺少根元素”

    Q: 在反序列化 Xml 字符串为 Xml 对象时,抛出如下异常. 即在 XML文档(0, 0)中有一个错误:缺少根元素. A: 首先看下代码: StringBuilder sb = new Stri ...

随机推荐

  1. Kubernetes 之 MySQL 持久存储和故障转移(十一)

    目录 一.规划 二.部署 1.创建 PV 和 PVC 2.部署 MySQL 3.更新 MySQL 数据 4.故障转移 一.规划 我们接着之前的文档的架构规划进行下面的操作. IP 角色 192.168 ...

  2. PHP实现的MongoDB数据增删改查

    原文地址:https://www.mongodb.org.cn/drivers/2.html   (该网站为mongoDB官方网站) php中使用mongodb你必须使用 mongodb 的 php驱 ...

  3. LeetCode 328. 奇偶链表(Odd Even Linked List)

    328. 奇偶链表 328. Odd Even Linked List 题目描述 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起.请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是 ...

  4. Idea破解到2100年的简单方法

    第一步下载IntelliJ IDEA 2018.1.6版本,比这个更新的版本得你自己找注册码,因为旧的注册码对最新版本的软件不管用,所以建议还是下载这个版本,或者这个版本之前的也可以: 地址:http ...

  5. Django-02-django的命令行工具

    django-admin.py 是Django的一个用于管理任务的命令行工具,manage.py是对django-admin.py的简单包装,每一个Django Project里都会有一个mannag ...

  6. CSS中position 和float的使用说明(清晰)

    当构建页面排版时,有不同的方法可以使用.使用哪一种方法取决于具体页面的排版要求,在不同的情况下,某些方法可能好过于其他的方法. 比如,可以使用若干个浮动元素来构建一个整洁简洁的页面排版.或者,如果需要 ...

  7. SpringBoot项目jar启动端口设置

    SpringBoot项目打包后,在target下生成的jar文件可以使用 Java - jar 直接启动,指定端口号配置 java -jar epjs-eureka.jar --server.port ...

  8. [LOJ3083] [GXOI2019] 与或和

    题目链接 LOJ:https://loj.ac/problem/3083 洛谷:https://www.luogu.org/problemnew/show/P5300 Solution 逐位考虑,可以 ...

  9. javascript 同源策略和 JSONP 的工作原理

    同源策略 同源策略是一个约定,该约定阻止当前脚本获取或操作另一域的内容.同源是指:域名.协议.端口号都相同. 简单地说,A 服务器下的 a 端口执行 ajax 程序,不能获取 B 服务器或者 A 服务 ...

  10. MVC-09安全

    部分8:添加安全. MVC应用程序安全性 Models文件夹包含表示应用程序模型的类. Visual Web Developer自动创建AccountModels.cs文件,该文件包含用于应用程序认证 ...