Linguagem
Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo descreve como controlar prefixos de namespace ao serializar uma árvore XML em C# e Visual Basic.
Em muitas situações, não é necessário controlar prefixos de namespace. No entanto, certas ferramentas de programação XML exigem-no. Por exemplo, você pode estar manipulando uma folha de estilos XSLT ou um documento XAML que contém expressões XPath incorporadas que se referem a prefixos de namespace específicos. Nesse caso, é importante que o documento seja serializado com esses prefixos. Esse é um motivo comum para controlar prefixos de namespace.
Outro motivo é que você deseja que os usuários editem o documento XML manualmente e deseja criar prefixos de namespace que sejam convenientes para o usuário digitar. Por exemplo, você pode estar gerando um documento XSD. As convenções para esquemas sugerem que você use um xs ou xsd como o prefixo para o namespace do esquema.
Para controlar prefixos de namespace, insira atributos que declaram namespaces. Se você declarar os namespaces com prefixos específicos, o LINQ to XML tentará honrar os prefixos de namespace durante a serialização.
Para criar um atributo que declara um namespace com um prefixo, crie um atributo onde o namespace do nome do atributo é Xmlns, e o nome do atributo é o prefixo do namespace. O valor do atributo é o URI do namespace.
Exemplo: Criar dois namespaces com prefixos
Este exemplo declara dois namespaces. Ele especifica o prefixo aw para o http://www.adventure-works.com namespace e o prefixo fc para o www.fourthcoffee.com namespace.
XNamespace aw = "http://www.adventure-works.com";
XNamespace fc = "www.fourthcoffee.com";
XElement root = new XElement(aw + "Root",
new XAttribute(XNamespace.Xmlns + "aw", "http://www.adventure-works.com"),
new XAttribute(XNamespace.Xmlns + "fc", "www.fourthcoffee.com"),
new XElement(fc + "Child",
new XElement(aw + "DifferentChild", "other content")
),
new XElement(aw + "Child2", "c2 content"),
new XElement(fc + "Child3", "c3 content")
);
Console.WriteLine(root);
Imports <xmlns:aw="http://www.adventure-works.com">
Imports <xmlns:fc="www.fourthcoffee.com">
Module Module1
Sub Main()
Dim root As XElement = _
<aw:Root>
<fc:Child>
<aw:DifferentChild>other content</aw:DifferentChild>
</fc:Child>
<aw:Child2>c2 content</aw:Child2>
<fc:Child3>c3 content</fc:Child3>
</aw:Root>
Console.WriteLine(root)
End Sub
This example produces the following output:
```xml
<aw:Root xmlns:aw="http://www.adventure-works.com" xmlns:fc="www.fourthcoffee.com">
<fc:Child>
<aw:DifferentChild>other content</aw:DifferentChild>
</fc:Child>
<aw:Child2>c2 content</aw:Child2>
<fc:Child3>c3 content</fc:Child3>
</aw:Root>