根据Xml节点名获取Xpath

我们经常使用Xpath去获取Xml中某个节点的值,但是有时候我们需要反过来,根据Xml的节点名来获取对应的Xpath。


找了一下,几乎所有的Xml库都没有提供类似的功能,这里我们就简单说一说这玩意咋实现比较方便。


这里我们先不考虑那么多,就是获取一个节点名,一个节点xpath,暂时不去整位置之类的玩意。


我们先定义一个类来接收这个玩意。

public class XpathInfo
{
    public XpathInfo(string name, string xpath)
    {
        Name = name;
        Xpath = xpath;
    }
    
    public string Name { get;set; }
    public string Xpath { get;set; }
}

这里面我们只定义一个名字一个Xpath,剩下的暂时不考虑,然后我们就用这个类来处理。


然后我们来获取某个Xml中所有的Xpath.

var xpathInofps = new List<XpathInfo>();
var document = XDocument.Parse(要处理的Xml字符串);
foreach (var node in document.Descendants())
{
    var name = node.Nmae.LocalName;
    var path = node.AncestorsAndSelf().Select(x => x.Name.LocalName).Reverse();
    var xpath = string.Join("/", path);
    xpathInfos.Add(new XpathInfo(name, xpath));
}

这样,我们就能生成一个Xpath列表,就可以根据名字来获取了,如果存在多个的我们可以再进行筛选。

posted @   jvx  阅读(1396)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示