[英]Path of Current Node in XDocument
是否可以在 XDocument 中獲取當前 XElement 的路徑? 例如,如果我遍歷文檔中的節點,是否有某種方法可以獲得該節點(XElement)的路徑,以便它返回類似 \\root\\item\\child\\currentnode 的內容?
沒有內置任何東西,但您可以編寫自己的擴展方法:
public static string GetPath(this XElement node)
{
string path = node.Name.ToString();
XElement currentNode = node;
while (currentNode.Parent != null)
{
currentNode = currentNode.Parent;
path = currentNode.Name.ToString() + @"\" + path;
}
return path;
}
XElement node = ..
string path = node.GetPath();
但這並沒有考慮元素在其對等組中的位置。
取決於您想如何使用 XPath。 在任何一種情況下,您都需要自己走樹並在途中構建 XPath。
如果您想要顯示可讀的字符串 - 只需加入 prent 節點的名稱(請參閱 BrokenGlass 建議)就可以了
如果您想稍后在 XPath 上選擇
請注意,如果您想要真正通用版本的 XPath 到 XML 中的節點,則可能需要考慮特殊節點,如注釋和處理指令。
我知道這個問題很老,但萬一有人想要一個簡單的襯里:
XElement element = GetXElement();
var xpath = string.Join ("/", element.AncestorsAndSelf().Reverse().Select(a => a.Name.LocalName).ToArray());
用途:
using System.Linq;
using System.Xml.Linq;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.