XNamespace 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示 XML 命名空间。 此类不能被继承。
public ref class XNamespace sealed
public sealed class XNamespace
type XNamespace = class
Public NotInheritable Class XNamespace
- 继承
-
XNamespace
注解
此类表示命名空间的 XML 构造。
每个 XName 都包含一个 XNamespace. 即使某个元素不在命名空间中,该元素 XName 仍包含命名空间 XNamespace.None。 属性 XName.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 原子化
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 文本,这不涉及使用扩展名称。
属性
| 名称 | 说明 |
|---|---|
| NamespaceName |
获取此命名空间的统一资源标识符(URI)。 |
| None |
XNamespace获取与无命名空间对应的对象。 |
| Xml |
XNamespace获取对应于 XML URI ( |
| Xmlns |
XNamespace获取对应于 xmlns URI ( |
方法
| 名称 | 说明 |
|---|---|
| Equals(Object) |
确定指定的 XNamespace 值是否等于当前 XNamespace。 |
| Get(String) |
获取指定统一资源标识符(URI)的一个 XNamespace 值。 |
| GetHashCode() |
获取此 XNamespace代码的哈希代码。 |
| GetName(String) |
返回 XName 从此 XNamespace 对象和指定的本地名称创建的对象。 |
| GetType() |
获取当前实例的 Type。 (继承自 Object) |
| MemberwiseClone() |
创建当前 Object的浅表副本。 (继承自 Object) |
| ToString() |
返回此 XNamespaceURI。 |
运营商
| 名称 | 说明 |
|---|---|
| Addition(XNamespace, String) |
将对象XNamespace与本地名称合并以创建 。XName |
| Equality(XNamespace, XNamespace) |
返回一个值,该值指示两个实例 XNamespace 是否相等。 |
| Implicit(String to XNamespace) |
将包含统一资源标识符(URI)的字符串转换为 XNamespace。 |
| Inequality(XNamespace, XNamespace) |
返回一个值,该值指示两个实例 XNamespace 是否不相等。 |