首页 > 解决方案 > 如何从 XElement 对象中提取 XML 命名空间前缀?

问题描述

例如,我从 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”。)

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

标签: c#.netxmlxml-parsingxml-namespaces

解决方案


使用GetPrefixOfNamespace()方法来实现这一点:

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

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


推荐阅读