XNamespace 类

定义

表示一个 XML 命名空间。 此类不能被继承。

public ref class XNamespace sealed
public sealed class XNamespace
type XNamespace = class
Public NotInheritable Class XNamespace
继承
XNamespace

注解

此类表示命名空间的 XML 构造。

每个 XName 对象都包含一个 XNamespace. 即使某个元素不在命名空间中,该元素的 XName 仍包含命名空间 XNamespace.NoneXName.Namespace 属性一定不会是 null

创建 XNamespace 对象

创建 XNamespace 对象的最常见方法是只向其分配字符串。 然后,可以使用加法运算符的替代将命名空间与本地名称合并。 以下示例演示了此成语:

XNamespace aw = "http://www.adventure-works.com";  
XElement root = new XElement(aw + "Root", "Content");  
Console.WriteLine(root);  
Dim aw As XNamespace = "http://www.adventure-works.com"  
Dim root As XElement = New XElement(aw + "Root", "Content")  
Console.WriteLine(root)  

但是,在Visual Basic中,通常声明全局默认命名空间,如下所示:

Imports <xmlns='http://www.adventure-works.com'>  

Module Module1  
    Sub Main()  
        Dim root As XElement = _  
            <Root>Content</Root>  
        Console.WriteLine(root)  
    End Sub  
End Module  

该示例产生下面的输出:

<Root xmlns="http://www.adventure-works.com">Content</Root>  

将字符串分配给 XNamespace 使用从 String中隐式转换 。

有关详细信息和示例,请参阅如何在 C# (LINQ to XML) 中创建包含命名空间的文档

有关在 Visual Basic 中使用命名空间的详细信息,请参阅使用 XML 命名空间

控制命名空间前缀

如果创建声明命名空间的属性,则属性中指定的前缀将保留在序列化的 XML 中。 若要创建一个声明具有前缀的命名空间的属性,请创建一个属性,该属性的名称的命名空间为 Xmlns,该属性的名称为命名空间前缀。 该属性的值即是命名空间的 URI。 以下示例演示了此成语:

XNamespace aw = "http://www.adventure-works.com";  
XElement root = new XElement(aw + "Root",  
    new XAttribute(XNamespace.Xmlns + "aw", "http://www.adventure-works.com"),  
    "Content");  
Console.WriteLine(root);  
Dim aw As XNamespace = "http://www.adventure-works.com"  
Dim root As XElement = New XElement(aw + "Root", _  
    New XAttribute(XNamespace.Xmlns + "aw", "http://www.adventure-works.com"), _  
    "Content")  
Console.WriteLine(root)  

在Visual Basic中,通常使用全局命名空间声明,而不是创建命名空间节点来控制命名空间前缀:

Imports <xmlns:aw='http://www.adventure-works.com'>  

Module Module1  
    Sub Main()  
        Dim root As XElement = _  
            <aw:Root>Content</aw:Root>  
        Console.WriteLine(root)  
    End Sub  
End Module  

该示例产生下面的输出:

<aw:Root xmlns:aw="http://www.adventure-works.com">Content</aw:Root>  

有关详细信息,请参阅 如何控制命名空间前缀

创建默认命名空间

构造将成为命名空间的属性时,如果属性名称具有“xmlns”的特殊值,则在序列化 XML 树时,命名空间将声明为默认命名空间。 名称为“xmlns”的特殊属性不在任何命名空间中。 特性的值是命名空间 URI。

以下示例创建一个 XML 树,其中包含一个属性,该属性声明的方式是命名空间将成为默认命名空间:

XNamespace aw = "http://www.adventure-works.com";  
XElement root = new XElement(aw + "Root",  
    new XAttribute("xmlns", "http://www.adventure-works.com"),  
    new XElement(aw + "Child", "content")  
);  
Console.WriteLine(root);  
Dim aw As XNamespace = "http://www.adventure-works.com"  
Dim root As XElement = New XElement(aw + "Root", _  
    New XAttribute("xmlns", "http://www.adventure-works.com"), _  
    New XElement(aw + "Child", "content") _  
)  
Console.WriteLine(root)  

在Visual Basic中,通常使用全局默认命名空间声明,而不是创建命名空间节点来创建默认命名空间:

Imports <xmlns='http://www.adventure-works.com'>  

Module Module1  
    Sub Main()  
        Dim root As XElement = _  
            <Root>  
                <Child>content</Child>  
            </Root>  
        Console.WriteLine(root)  
    End Sub  
End Module  

该示例产生下面的输出:

<Root xmlns="http://www.adventure-works.com">  
  <Child>content</Child>  
</Root>  

XNamespace Atomization

XNamespace 保证将对象原子化;也就是说,如果两个 XNamespace 对象具有相同的 URI,则它们将共享同一实例。 为此显式提供相等运算符和比较运算符。

使用扩展名称

指定命名空间和本地名称的另一种方法是使用窗体 {namespace}name中的扩展名称:

XElement e = new XElement("{http://www.adventure-works.com}Root",  
     new XAttribute("{http://www.adventure-works.com}Att", "content")  
);  
Console.WriteLine(e);  
Dim e As XElement = New XElement("{http://www.adventure-works.com}Root", _  
     New XAttribute("{http://www.adventure-works.com}Att", "content") _  
)  
Console.WriteLine(e)  

该示例产生下面的输出:

<Root p1:Att="content" xmlns:p1="http://www.adventure-works.com" xmlns="http://www.adventure-works.com" />  

这种方法的性能较低。 每次将包含扩展名称的字符串传递给LINQ to XML时,都必须分析名称、查找原子化命名空间和查找原子化名称。 这个过程会占用 CPU 时间。 如果性能很重要,可能需要使用不同的方法。

使用Visual Basic时,建议的方法是使用 XML 文本,而 XML 文本不涉及使用扩展名称。

属性

NamespaceName

获取此命名空间的统一资源标识符 (URI)。

None

获取不与命名空间对应的 XNamespace 对象。

Xml

获取与 XML URI (http://www.w3.org/XML/1998/namespace) 对应的 XNamespace 对象。

Xmlns

获取与 xmlns URI (http://www.w3.org/2000/xmlns/) 对应的 XNamespace 对象。

方法

Equals(Object)

确定指定的 XNamespace 是否等同于当前的 XNamespace

Get(String)

获取指定统一资源标识符 (URI) 的 XNamespace

GetHashCode()

获取此 XNamespace 的哈希代码。

GetName(String)

返回从此 XNamespace 和指定的本地名称创建的 XName 对象。

GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
ToString()

返回此 XNamespace 的 URI。

运算符

Addition(XNamespace, String)

XName 对象与本地名称进行组合来创建 XNamespace

Equality(XNamespace, XNamespace)

返回一个值,该值指示 XNamespace 的两个实例是否相等。

Implicit(String to XNamespace)

将包含统一资源标识符 (URI) 的字符串转换为 XNamespace

Inequality(XNamespace, XNamespace)

返回一个值,该值指示 XNamespace 的两个实例是否相等。

适用于

另请参阅