簡體   English   中英

C# XElement 使用命名空間獲取屬性

[英]C# XElement Get Attribute with a Namespace

我有許多 XElement,但它們的“href”屬性有一個命名空間。 當我嘗試獲取它時,它返回 null。

<link xlink:href="The/href" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="a/location">A value</link>

我努力了:

XElement linkEl = doc.Root.Element("link");
string hrefValue = linkEl.Attribute("href").Value //null;

我還嘗試將命名空間添加到 Attribute() 中的“href”,例如“xlink:href”,但這會導致錯誤。 有誰知道如何施展這個魔法?

試試這個:

XDocument doc = XDocument.Parse(@"<link xlink:href=""The/href"" xmlns:xlink=""http://www.w3.org/1999/xlink"" xmlns=""a/location"">A value</link>");

XNamespace ab = "http://www.w3.org/1999/xlink";
string hrefValue = doc.Root.Attribute(ab + "href").Value;

對於您的示例 xml,您無法通過使用其名稱找到您的元素,它必須是元素的 LocalName。

要通過 LocalName 獲取元素,這里是示例:

var linkElement = doc.Root.Elements().Where(e => e.Name.LocalName == "link").FirstOrDefault();
var linkAttribute = linkElement.Attributes().Where(a => a.Name.LocalName == "href").FirstOrDefault();
var hrefValue = linkAttribute.Value;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM