我们经常使用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列表,就可以根据名字来获取了,如果存在多个的我们可以再进行筛选。

根据Xml节点名获取Xpath的更多相关文章

  1. 第一百二十六节,JavaScript,XPath操作xml节点

    第一百二十六节,JavaScript,XPath操作xml节点 学习要点: 1.IE中的XPath 2.W3C中的XPath 3.XPath跨浏览器兼容 XPath是一种节点查找手段,对比之前使用标准 ...

  2. 从字符串中获取XML节点数据

    从字符串中获取XML节点数据,前一篇<字符串创建XML文档> http://www.cnblogs.com/insus/p/3298579.html 是储存为一个XML文档.现在,Insu ...

  3. Java获取XML节点总结之读取XML文档节点

    dom4j是Java的XML API,用来读写XML文件的.目前有很多场景中使用dom4j来读写xml的.要使用dom4j开发,需要下载导入dom4j相应的jar文件.官网下载:http://www. ...

  4. XML节点名称中有小数点处理(deal with dot)导致使用xpath时报错解决方法

    <?xml version="1.0"?> <ModifyFiles> <_Layout.cshtml>123456</_Layout.c ...

  5. 用DOM解析XML ,用xpath快速查询XML节点

    XPath是一种快速查询xml节点和属性的一种语言,Xpath和xml的关系就像是sql语句和数据库的关系.用sql语句可以从数据库中快速查询出东西同样的用xPath也可以快速的从xml中查询出东西. ...

  6. 用LINQ获取XML节点数据

    Insus.NET想对<从字符串中获取XML节点数据> http://www.cnblogs.com/insus/p/3299052.html 这篇改写为使用LINQ的方法实现.LINQ中 ...

  7. 常用的方法,读取XML节点并赋值给List集合

    一.前言 很多时候也可以直接在XML文件中配置好节点,在程序需要用到的时候,修改XML文件并不需要重新编译,这里是在极光推送中拿出来的一部分代码.代码简单,大家直接看例子吧. 二.实现过程 1.新创建 ...

  8. Java XML DOM解析(xPath)

    (一) XML概念 在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等.它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的 ...

  9. XML概念定义以及如何定义xml文件编写约束条件java解析xml DTD XML Schema JAXP java xml解析 dom4j 解析 xpath dom sax

    本文主要涉及:xml概念描述,xml的约束文件,dtd,xsd文件的定义使用,如何在xml中引用xsd文件,如何使用java解析xml,解析xml方式dom sax,dom4j解析xml文件 XML来 ...

  10. 详解SimpleXML添加_修改_删除_遍历XML节点属性

    SimpleXML概述 要处理XML 文件,有两种传统的处理思路:SAX 和DOM.SAX 基于事件触发机制,对XML 文件进行一次扫描,完成要进行的处理:DOM 则将整个XML 文件构造为一棵DOM ...

随机推荐

  1. 机器学习--决策树算法(CART)

    CART分类树算法 特征选择 ​ 我们知道,在ID3算法中我们使用了信息增益来选择特征,信息增益大的优先选择.在C4.5算法中,采用了信息增益比来选择特征,以减少信息增益容易选择特征值多的特征的问题. ...

  2. logistic和softmax

    一直觉得logistic regression就是softmax的一种特殊的形式,softmax是多类,logistic是两类. 但是今天仔细想了想logistic的意义以及softmax的意义,感觉 ...

  3. babel-preset-env与stage-x的使用指南

    babel介绍 babel总共分为3个阶段: 解析.转换和生成 babel本身不具有任何转换功能, 如果没有plugin,那么经过babel的代码和输入的是相同的. babel插件分为两种 语法插件: ...

  4. RxJS 系列 – 大杂烩

    前言 RxJS 有太多方法了, 想看完整的可以去看 REFERENCE – API List, 这篇介绍一些非 operator 的常用方法. NEVER NEVER.subscribe({ comp ...

  5. JavaScript – Set and Map

    参考 Set 和 Map 数据结构 Set 介绍和使用 Set 很像 Array, 但其实它是一个 Iteralbe 对象. 用于保存多个值, 而且具有 unique 特性 (1 个 set 里面不会 ...

  6. Azure – WAF (Web Application Firewall)

    前言 最近有客户想购买 Azure 的 Web Application Firewall (WAF), 来防 SQL Injection, XSS 攻击. 一开始我是觉得没什么必要, 毕竟什么年代了, ...

  7. JavaScript习题之填空题

    1. JavaScript有两种引⽤数据类型:__数组___.__对象__.2. Javascript通过__setTimeout___延迟指定时间后,去执⾏某程序.3. Javascript⾥Str ...

  8. [29] CSP模拟2

    A.不相邻集合 考虑值域上连续的段,可以发现连续的长度为 \(x\) 的段的贡献必定为 \(\lceil{\frac{x}{2}}\rceil\) 考虑并查集维护值域连续的段的大小,每次询问求出全部连 ...

  9. word在原有的方框里打勾

    按住键盘上的ALT键不放,然后在小键盘区输入"9745"这几个数字,最后松开 ALT 键,自动变成框框中带勾符号.

  10. Flutter TextField 的高度问题

    示例 先来看一个例子:假设我们要做一个表单,左边是提示文字,右边是输入框 给出代码: Row( crossAxisAlignment: CrossAxisAlignment.center, child ...