如何从 XElement 对象中提取 XML 命名空间前缀?

How can I pull out the XML namespace prefix from an XElement object?

例如,我从 XDocument 对象中提取了一个 XElement 对象

XDocument doc = XDocument.Parse(@"<billpg:MyRoot xmlns:billpg=""http://billpg.com/rutabaga"" />");
XElement elem = doc.Root; /* Or any element inside the document. */

如何从此 XElement 对象中提取 XML 前缀?
(在上面的例子中 elem 是 "billpg"。)

我可以从 elem.Name.Namespace.NamespaceName 获得完整的 URL 命名空间,但我正在尝试提取短的 "billpg" 部分。我还会注意到 elem.ToString() returns 一个在正确位置包含 "billpg" 的字符串,这可能是正则表达式。虽然这可行,但它并不真正符合使用 XML 库的精神。

使用GetPrefixOfNamespace()方法实现:

var prefix = elem.GetPrefixOfNamespace(elem.Name.Namespace);

您可以在文档中找到更多相关信息: https://docs.microsoft.com/en-us/dotnet/api/system.xml.linq.xelement.getprefixofnamespace