可扩展标记语言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中特殊的意义字符
< | < | 小于 |
---|---|---|
> | > | 大于 |
& | & | 和号 |
&apos | ’ | 单引号 |
" | " | 引号 |
注:在使用时需要在实体引用之后加一个";"才能生效。
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。
来源:CSDN
作者:南柯Diana
链接:https://blog.csdn.net/diane6/article/details/104513183