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. orcad 删除不连接符号

    1. 双击不连接符号的引脚,如下面的1脚NC 2. 进入引脚的属性界面,取消Is No Connect

  2. H5混合开发中android终端和ios终端常见的兼容问题2

    转自 https://www.cnblogs.com/stoneniqiu/p/6077112.html 1.ios键盘挡住输入框. setInterval(function () { if (doc ...

  3. [转载] - Entity Framework 性能优化建议

    1.对象管理机制-复杂为更好的管理模型对象,EF提供了一套内部管理机制和跟踪对象的状态,保存对象一致性,使用方便,但是性能有所降低. 2.执行机制-高度封装在EF中,所有的查询表达式都会经过语法分析. ...

  4. 【LEETCODE】58、数组分类,适中级别,题目:238、78、287

    package y2019.Algorithm.array.medium; import java.util.Arrays; /** * @ProjectName: cutter-point * @P ...

  5. [UOJ #167]【UR #11】元旦老人与汉诺塔

    题目大意:给你一个有$n$个盘子的汉诺塔状态$S$,问有多少种不同的操作方法,使得可以在$m$步以内到达状态$T$.$n,m\leqslant100$ 题解:首先可以知道的是,一个状态最多可以转移到其 ...

  6. Disruptor与Netty实现百万级(十)

    实体对象: import java.io.Serializable; public class TranslatorData implements Serializable { private sta ...

  7. Mac 磁盘分区格式

    Mac 磁盘分区格式 来源 https://www.chadou.me/p/190 参考文章 macOS磁盘工具帮助 在Mac系统中抹掉(格式化)磁盘的时候,要求选择分区方案,包括GUID分区图.主引 ...

  8. windows cmd下列出当前目录下的所有文件

    使用的命令是dir 如,列出当前目录下的目录及文件名到1.txt: dir /b >1.txt 只列出某类文件 dir *.txt  /b >1.txt

  9. 将H5页面打包成安卓原生app

    第一步:下载HBuilderX,新建项目选择5+App新建一个空项目如下图 新建后项目目录结构如下图 第二步,将你要打包成安卓app的文件打包,最后生成的文件目录如下图 1.打包完成后,将对应文件内容 ...

  10. mac环境下Android 反编译

    连接地址: https://www.jianshu.com/p/3a305f32c4a3