xml是由万维网定义的一种可拓展的标记语言
xml具有严格的语言规范和良好的可拓展性,允许自由定义标记以描述数据的结构
xml不关心数据的显示方式,这就使得数据内容和结果与显示效果分离,不但有利于信息的搜索和数据的处理,还有利于系统的维护。
早期应用程序的数据存储通常借助于自定义的文本文件或二进制文件来实现,后来借助于数据库的技术来存储数据,前者的缺点是不能在不同的应用程序之间共享数据,而
后者的缺点是应用程序严重依赖某种特定的数据库管理(DBMS),造成异构系统之间也很难交换数据,后来XML的出现受到行业的广泛关注和认同。
下面我们学习xml文档的查询,我们先了解DOM,和XPath查询
这里先有个xml文件 SchoolStudent.xml
<?xml version="1.0" encoding="utf-8" ?>
<students>
<student age="21">
<name>王五</name>
</student>
<student age="22">
<name>张三</name>
</student>
<student age="23">
<name>李四</name>
</student>
</students>
一. 先使用Dom进行查询
XmlDocument stuXml = new XmlDocument();
stuXml.Load(Server.MapPath("XML/SchoolStudent.xml"));
//根据属性值获得节点
XmlNode stuZhang = stuXml.SelectSingleNode("//students/student[@age='21']");
Response.Write(stuZhang.InnerText);
//根据节点里面的内容获得节点
XmlNodeList listLuo = stuXml.SelectNodes("//students/student");
foreach (XmlNode nodeLuo in listLuo)
{
if (nodeLuo.InnerText == "李四")
{
Response.Write(nodeLuo.InnerText);
}
}
二. XPath 读取数据
XPathDocument doc = new XPathDocument(Server.MapPath("XML/SchoolStudent.xml"));
XPathNavigator nav = doc.CreateNavigator();
string comm = "students/student[@age='21']";
XPathExpression exp = nav.Compile(comm);
XPathNodeIterator ni = nav.Select(exp);
string str = "";
while (ni.MoveNext())
{
ni = (XPathNodeIterator)ni.Current.Evaluate("name/text()");
str = ni.Current.Value;
}
Response.Write(str);