可扩展标记语言XML

情到浓时终转凉″ 提交于 2020-02-26 13:32:10

可扩展标记语言XML

1.XML简介

  • XML 指可扩展标记语言(EXtensible Markup Language)
  • XML 是一种标记语言,很类似 HTML
  • XML 的设计宗旨是传输数据,而非显示数据
  • XML 标签没有被预定义。您需要自行定义标签。
  • XML 被设计为具有自我描述性。
  • XML 是 W3C 的推荐标准

XML技术应用广泛,最基本的如网站、应用程序的配置信息一般都采用XML文件描述。

<?xml version="1.0" encoding="UTF-8" ?>
<Engineer>
	<ID>1002</ID>
	<Name>张靓</Name>
	<Age>20</Age>
	<ID>1001</ID>
	<Name>周杰</Name>
	<Age>22</Age>
</Engineer>

2.XML用途

XML 应用于 web 开发的许多方面,常用于简化数据的存储和共享。

XML 把数据从 HTML 分离
如果你需要在 HTML 文档中显示动态数据,那么每当数据改变时将花费大量的时间来编辑 HTML。通过 XML,数据能够存储在独立的 XML 文件中。这样你就可以专注于使用 HTML 进行布局和显示,并确保修改底层数据不再需要对 HTML 进行任何的改变。通过使用几行 JavaScript,你就可以读取一个外部 XML 文件,然后更新 HTML 中的数据内容。

3.XML与HTML的差异

  • XML 不是 HTML 的替代,XML是对HTML的补充。

  • XML 和 HTML 为不同的目的而设计。

  • XML 被设计为传输和存储数据,其焦点是数据的内容。

  • HTML 被设计用来显示数据,其焦点是数据的外观。

  • HTML 旨在显示信息,而 XML 旨在传输信息。

4.XML的结构

XML 文档形成一种树结构,XML 文档必须包含根元素。该元素是所有其他元素的父元素。XML 文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端。所有元素均可拥有子元素。

<?xml version="1.0" encoding="utf-8" ?>
<TVChannels> <!-- 根节点 -->
	<Channel>
		<channelType>TypeA</channelType> <!--频道类型-->
		<tvChannel>北京电视台</tvChannel> <!--频道名称-->
		<path>北京电视台.xml</path>  <!--频道对应XML文件的本地路径-->
	</Channel>
	<Channel>
		<channelType>TypeB</channelType>
		<tvChannel>凤凰卫视</tvChannel>
		<path>凤凰卫视.xml</path>
	</Channel>
</TVChannels>

5.XML语法规则

1.所有标签必须关闭:在 XML 中,省略关闭标签是非法的。所有元素都必须有关闭标签。

<p>This is a paragraph</p>
<p>This is another paragraph</p>  

2.对大小写敏感:在 XML 中,标签 与标签 是不同的。必须使用相同的大小写来编写打开标签和关闭标签。

<Message>这是错误的。</message>

<message>这是正确的。</message> 

3.必须正确的嵌套:在 XML 中,所有元素都必须彼此正确地嵌套!

<b><i>This text is bold and italic</i></b>

4.XML 文档必须有一个元素是所有其他元素的父元素。该元素称为根元素。

<root>
  <child>
    <subchild>.....</subchild>
  </child>
</root>

5.XML属性值必须加引号

<note date="08/08/2008">
<to>George</to>
<from>John</from>
</note> 

6.XML中特殊的意义字符

&lt < 小于
&gt > 大于
&amp & 和号
&apos 单引号
&quot " 引号

注:在使用时需要在实体引用之后加一个";"才能生效。

7.XML中的元素命名规则

  • 名称可以含字母、数字以及其他的字符
  • 名称不能以数字或者标点符号开始
  • 名称不能以字符 “xml”(或者 XML、Xml)开始
  • 名称不能包含空格
  • 可使用任何名称,没有保留的字词。

8.解析XML文件

static void Main(string[] args)
        {
            XmlDocument myXml = new XmlDocument();
            myXml.Load("Y1.xml");
            XmlNode engineer = myXml.DocumentElement;
            foreach(XmlNode node in engineer.ChildNodes)
            {
                switch (node.Name)
                {
                    case "ID":
                        Console.WriteLine("ID:{0}",node.InnerText);
                        break;
                    case "Name":
                        Console.WriteLine("姓名:{0}", node.InnerText);
                        break;
                    case "Age":
                        Console.WriteLine("年龄:{0}", node.InnerText);
                        break;
                }
            }
            Console.ReadLine();
        }

XmlDocument对象可表示整个XML文档,它使用Load()方法将指定的XML文件读入XmlDocument对象,Load()方法的参数是XML文档的路径。属性DocumentElement用于获取XML文件的根节点。

XMLNode对象表示一个XML中的节点。ChildNodes属性用于获取该节点下的所有子节点。节点的Name属性可以获取当前节点的名称,而节点的InnerText属性用于获取当前节点的值。

对象 属性和方法 说明
XmlDocument DocumentElement属性 获取根节点
ChildNodes属性 获取所有子节点
Load()方法 读取整个XML的结构
XMLNode InnerText 当前节点的值
Name属性 当前节点的名称
ChildNodes属性 当前节点的所有子节点

除了XMLNode,还有另一种方法也能解析XML文件,那就是XMlElment。

static void Main(string[] args)
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load("FullChannels.xml");
            XmlElement xmlRoot = xmlDoc.DocumentElement;
            foreach (XmlNode node in xmlRoot.ChildNodes)
            {
                		       Console.WriteLine(node["channelType"].InnerText+"\t"+node["tvChannel"].InnerText+"\t"+node["path"].InnerText);
            }
            Console.ReadLine();
        }

区别XMLNode和XmlElment

  • XMLNode是abstract,XmlElment是class。
  • XMlElment是XMLNode的子类。

9.Treeview树形控件

Treeview常用于绑定解析后的XML数据,因为它们都是树形结构。

  • 通过控件绑定节点:XMLNode。
  • 通过代码绑定节点:XMLNode。
  • 设置节点的文本:Text。
  • 设置节点的隐藏域:Tag。
  • 深度:Level。
  • 当前下标:index。
  • 节点选中事件:AfterSelect。
  • 拿到选中的节点:Treeview.SelectedNode。
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!