Compartir a través de


XmlNamespaceManager.AddNamespace(String, String) Método

Definición

Agrega el espacio de nombres especificado a la colección.

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

Prefijo que se va a asociar al espacio de nombres que se agrega. Use String.Empty para agregar un espacio de nombres predeterminado.

Nota Si se va a usar XmlNamespaceManager para resolver los espacios de nombres en una expresión XPath (XML Path Language), se ha de especificar un prefijo. Si una expresión XPath no incluye un prefijo, se supone que el identificador uniforme de recursos (URI) del espacio de nombres corresponde al espacio de nombres vacío. Para obtener más información sobre las expresiones XPath y XmlNamespaceManager, vea los métodos SelectNodes(String) y SetContext(XmlNamespaceManager).

uri
String

Espacio de nombres que se va a agregar.

Excepciones

El valor de prefix es "xml" o "xmlns".

El valor de prefix o uri es null.

Ejemplos

En el ejemplo siguiente se usa XmlNamespaceManager para resolver espacios de nombres en un 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

Comentarios

XmlNamespaceManager no comprueba prefix y uri comprueba la conformidad.

XmlReader comprueba los nombres, incluidos los prefijos y los espacios de nombres, para asegurarse de que son nombres XML válidos según la especificación de espacios de nombres de World Wide Web Consortium (W3C). XmlNamespaceManager se usa internamente mediante XmlReader, por lo que para evitar la duplicación de esfuerzos, XmlNamespaceManager se supone que todos los prefijos y espacios de nombres son válidos.

Si el prefijo y el espacio de nombres ya existen dentro del ámbito actual, el nuevo par de prefijos y espacios de nombres reemplazará la combinación de prefijo o espacio de nombres existente. La misma combinación de prefijo y espacio de nombres puede existir en distintos ámbitos.

Los siguientes pares de prefijos o espacios de nombres se agregan de forma predeterminada a XmlNamespaceManager. Se pueden determinar en cualquier ámbito.

Prefijo Espacio de nombres
xmlns http://www.w3.org/2000/xmlns/ (espacio de nombres de prefijo xmlns)
Xml http://www.w3.org/XML/1998/namespace (el espacio de nombres XML)
String.Empty String.Empty (el espacio de nombres vacío). Este valor se puede reasignar a un prefijo diferente. Por ejemplo, xmlns="" define el espacio de nombres predeterminado para que sea el espacio de nombres vacío.

Se aplica a

Consulte también