XmlNamespaceManager.AddNamespace(String, String) Método

Definição

Adiciona o namespace especificado à coleção.

public:
 virtual void AddNamespace(System::String ^ prefix, System::String ^ uri);
public virtual void AddNamespace (string prefix, string uri);
abstract member AddNamespace : string * string -> unit
override this.AddNamespace : string * string -> unit
Public Overridable Sub AddNamespace (prefix As String, uri As String)

Parâmetros

prefix
String

O prefixo para associar ao namespace sendo adicionado. Use String.Empty para adicionar um namespace padrão.

Observação Se o XmlNamespaceManager for usado para resolver os namespaces em uma expressão de linguagem XPath, será necessário especificar um prefixo. Se uma expressão XPath não incluir um prefixo, presume-se que o URI (Uniform Resource Identifier) do namespace é o namespace vazio. Para obter mais informações sobre as expressões XPath e XmlNamespaceManager, consulte os métodos SelectNodes(String) e SetContext(XmlNamespaceManager).

uri
String

O namespace a ser adicionado.

Exceções

O valor de prefix é "xml" ou "xmlns".

O valor de prefix ou uri é null.

Exemplos

O exemplo a seguir usa XmlNamespaceManager para resolver namespaces em um fragmento XML.

using System;
using System.Xml;

public class Sample
{

    public static void Main()
    {

        XmlTextReader reader = null;

        try
        {

            // Create the string containing the XML to read.
            String xmlFrag = "<book>" +
                           "<title>Pride And Prejudice</title>" +
                           "<author>" +
                           "<first-name>Jane</first-name>" +
                           "<last-name>Austen</last-name>" +
                           "</author>" +
                           "<curr:price>19.95</curr:price>" +
                           "<misc>&h;</misc>" +
                           "</book>";

            // Create an XmlNamespaceManager to resolve namespaces.
            NameTable nt = new NameTable();
            XmlNamespaceManager nsmgr = new XmlNamespaceManager(nt);
            nsmgr.AddNamespace(String.Empty, "urn:samples"); //default namespace
            nsmgr.AddNamespace("curr", "urn:samples:dollar");

            // Create an XmlParserContext.  The XmlParserContext contains all the information
            // required to parse the XML fragment, including the entity information and the
            // XmlNamespaceManager to use for namespace resolution.
            XmlParserContext context;
            String subset = "<!ENTITY h 'hardcover'>";
            context = new XmlParserContext(nt, nsmgr, "book", null, null, subset, null, null, XmlSpace.None);

            // Create the reader.
            reader = new XmlTextReader(xmlFrag, XmlNodeType.Element, context);

            // Parse the file and display the node values.
            while (reader.Read())
            {
                if (reader.HasValue)
                    Console.WriteLine("{0} [{1}] = {2}", reader.NodeType, reader.Name, reader.Value);
                else
                    Console.WriteLine("{0} [{1}]", reader.NodeType, reader.Name);
            }
        }
        finally
        {
            if (reader != null)
                reader.Close();
        }
    }
} // End class
Imports System.Xml

Public Class Sample

    Public Shared Sub Main()

        Dim reader As XmlTextReader = Nothing

        Try

            ' Create the string containing the XML to read.
            Dim xmlFrag As String
            xmlFrag = "<book>" & _
                           "<title>Pride And Prejudice</title>" & _
                           "<author>" & _
                           "<first-name>Jane</first-name>" & _
                           "<last-name>Austen</last-name>" & _
                           "</author>" & _
                           "<curr:price>19.95</curr:price>" & _
                           "<misc>&h;</misc>" & _
                           "</book>"

            ' Create an XmlNamespaceManager to resolve namespaces.
            Dim nt As NameTable = New NameTable()
            Dim nsmgr As XmlNamespaceManager = New XmlNamespaceManager(nt)
            nsmgr.AddNamespace(String.Empty, "urn:samples") 'default namespace
            nsmgr.AddNamespace("curr", "urn:samples:dollar")

            ' Create an XmlParserContext.  The XmlParserContext contains all the information
            ' required to parse the XML fragment, including the entity information and the
            ' XmlNamespaceManager to use for namespace resolution.
            Dim context As XmlParserContext
            Dim subset As String = "<!ENTITY h 'hardcover'>"
            context = New XmlParserContext(nt, nsmgr, "book", Nothing, Nothing, subset, Nothing, Nothing, XmlSpace.None)

            ' Create the reader.
            reader = New XmlTextReader(xmlFrag, XmlNodeType.Element, context)

            ' Parse the file and display the node values.
            While (reader.Read())
                If (reader.HasValue) Then
                    Console.WriteLine("{0} [{1}] = {2}", reader.NodeType, reader.Name, reader.Value)
                Else
                    Console.WriteLine("{0} [{1}]", reader.NodeType, reader.Name)
                End If
            End While

        Finally
            If Not (reader Is Nothing) Then
                reader.Close()
            End If
        End Try
    End Sub
End Class

Comentários

XmlNamespaceManager não verifica prefix e uri se há conformidade.

XmlReader verifica os nomes, incluindo prefixos e namespaces, para garantir que eles sejam nomes XML válidos de acordo com a especificação de namespaces W3C (World Wide Web Consortium). XmlNamespaceManager é usado internamente por XmlReader, portanto, para evitar uma duplicação de esforços, XmlNamespaceManager pressupõe que todos os prefixos e namespaces sejam válidos.

Se o prefixo e o namespace já existirem no escopo atual, o novo prefixo e o par de namespace substituirão a combinação existente de prefixo/namespace. A mesma combinação de prefixo e namespace pode existir em escopos diferentes.

Os seguintes pares de prefixo/namespace são adicionados por padrão ao XmlNamespaceManager. Eles podem ser determinados em qualquer escopo.

Prefixo Namespace
xmlns http://www.w3.org/2000/xmlns/ (o namespace de prefixo xmlns)
Xml http://www.w3.org/XML/1998/namespace (o namespace XML)
String.Empty String.Empty (o namespace vazio). Esse valor pode ser reatribuído a um prefixo diferente. Por exemplo, xmlns="" define o namespace padrão como o namespace vazio

Aplica-se a

Confira também