XPth和XSLT的一些简单用法
(目的在于让大家知道有这个东西的存在)
XPath:即XML Path语言(Xpath)表达式使用路径表示法(像在URL中使用一样)来为XML文档的各部分寻址!
关于XPath如何使用了,我们来看看!当然这里面的代码只是入门,更深层次的还待更进一步的了解和学习!
既然是操作XML的那我们首先就需要一个xml文件!

<?xml version="1.0" encoding="gbk"?> <school version="2.0"> <class> <names>计1</names> <student types='1'> <name>aa</name> <sex>x</sex> <age>21</age> </student> <student types='2'> <name>bb</name> <sex>y</sex> <age>22</age> </student> <student types='3'> <name>cc</name> <sex>z</sex> <age>23</age> </student> </class> <class> <names>计2</names> <student types='4'> <name>aaa</name> <sex>x</sex> <age>21</age> </student> <student types='5'> <name>bbb</name> <sex>y</sex> <age>22</age> </student> <student types='6'> <name>ccc</name> <sex>z</sex> <age>23</age> </student> </class> </school>
很简单的一个XML下面我们就多这个XML进行操作!通过XPATH方式来寻找对应的值!
首先是建一个应用程序了,看代码

string filePath="Test.xml"; //创建xml读取对象(文档对象)? XmlDocument xmlDoc=new XmlDocument(); StreamReader sr = new StreamReader(filePath); //加载XML文件 xmlDoc.Load(sr); string path = "*/*/*/*"; //寻址格式表达式? XmlNodeList list = xmlDoc.SelectSingleNode(path).ChildNodes; foreach (XmlNode node in list) { MessageBox.Show(node.InnerText); } sr.Close();
这比较简单!运行的结果就是第一个*号代表school,第二个*号代表class 第三个*号代表names或students 第四个*代码的就是name默认第一个!所以输出的值是aa!那么我们想输出属于计2班的第一个人的姓名怎么办?
string path = "*/*/*[@types='4']/*";
我们的表达式就要这样写了!我们要找到最后一个了
string path = "*/*[last()]/*[last()]/*";
还可以具体指定,比如我要知道第二个班级的第二个学生的姓名
string path = "school/class[2]/student[2]/*[1]"; 等同于
string path = "*/*[2]/*[3]/*[1]";
大家可能疑惑,*代码表的是下面所有的节点的第几个节点!而上面的是指定了是student节点的第二个节点了!
道理到时相通的!知道了简单的语法了!其他的就好说了!
其他的语法了我们就要问我们的MSDN了,我们在MSDN中搜索XPath就可以得到相关的语法知识了!所以XPath并没有想象中的那么难!还等什么大家动手试下吧!下面我们来看下XStl吧!也不是很难!
XSLT:可扩展标记语言转换(XSTL)可以将源XML文档的内容转换为另一个格式或结构不同的文档。例如可以用XSTL将XML转换为网站上使用的HTML或转换为只包含应用陈旭所需字段文档。
首先我们用XSTL来做这样一件事,就是将一个XML中的数据转到HTML上面去
我们用的还是上面刚用到的XML吧!我们只加一个节点就是学校名字
<school version="2.0">
<schName>school</schName>
<class>
我们来写XSL后缀的文件
格式定义如下

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <HTML> <head> <title>name:<xsl:value-of select="school/schName"/></title> </head> <body> <table border='1'> <xsl:apply-templates/> </table> </body> </HTML> </xsl:template> <xsl:template match="school"> <xsl:apply-templates select="class"/> </xsl:template> <xsl:template match="class"> <tr> <td colspan='3'>class:<xsl:value-of select="names"/></td> </tr> <xsl:for-each select="student"> <tr> <td> name:<xsl:value-of select="name"/> </td> <td> sex:<xsl:value-of select="sex"/> </td> <td> age:<xsl:value-of select="age"/> </td> </tr> </xsl:for-each> </xsl:template> </xsl:stylesheet>
最开始就是一个头文件了!然后在就是一个模板定义了!/代表的是当前的要转换的XML
然后紧跟着的就是HTML代码了!在接着就是title了!<xsl:value-of select="school/schName"/>这句话就是查询了值并显示了!怎么查询,就是按XPath的语法查询了!查询当前XML文本下school/schName的值了!
然后在就是表格里面的值了一样的,因为我们知道XPth所以事情就好办多了!然后同样的是找到班级的值了!一个班级可能有很多人,我们要通过循环来找出班级里面的学生了!
语言都是神奇的,XSTL中也有循环嘿嘿!<xsl:for-each select="student">select指的是要循环的节点了!恩OK了!现在XML和XSTL文件都写好!怎么转换了!我们用到

XslCompiledTransform trans = new XslCompiledTransform(); trans.Load("books.xsl"); trans.Transform("Test.xml", "out.html");
Out.html不一定要是存在或不存在的!恩 运行OK看下效果图
哈哈,OK!这就是XPath和XSLT了!当然关于XSLT的语法还有很多,同样我们在MSDN中输入XSL就会出现很多像xsl:if、xsl:copy啊等一些语法元素了!网上也有很多相关的元素帮助说明!
(ps:很早之前在空间写的文章,因为要为后面的文章作铺垫,所以提过来了)
作者: RegicideGod
出处:https://www.cnblogs.com/RegicideGod/archive/2012/08/07/2627436.html
版权:本文采用「署名-非商业性使用-相同方式共享 4.0 国际」知识共享许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?