Share via


XmlNamespaceManager.AddNamespace(String, String) Méthode

Définition

Ajoute l’espace de noms spécifié à la collection.

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)

Paramètres

prefix
String

Préfixe à associer à l'espace de noms ajouté. Utilisez String.Empty pour ajouter un espace de noms par défaut.

Remarque Si XmlNamespaceManager est utilisé pour la résolution des espaces de noms dans une expression XPath (XML Path Language), un préfixe doit être spécifié. Si une expression XPath n’inclut pas de préfixe, l’URI (Uniform Resource Identifier) d’espace de noms est supposé être un espace de noms vide. Pour plus d'informations sur les expressions XPath et XmlNamespaceManager, reportez-vous aux méthodes SelectNodes(String) et SetContext(XmlNamespaceManager).

uri
String

Espace de noms à ajouter.

Exceptions

La valeur de prefix est « xml » ou « xmlns ».

La valeur de prefix ou de uri est null.

Exemples

L’exemple suivant utilise XmlNamespaceManager pour résoudre les espaces de noms dans un fragment 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

Remarques

XmlNamespaceManager ne vérifie prefix pas et uri ne vérifie pas la conformité.

XmlReader vérifie les noms, y compris les préfixes et les espaces de noms, pour s’assurer qu’ils sont des noms XML valides conformément à la spécification des espaces de noms W3C (World Wide Web Consortium). XmlNamespaceManager est utilisé en XmlReaderinterne par , afin d’éviter une duplication des efforts, XmlNamespaceManager suppose que tous les préfixes et espaces de noms sont valides.

Si le préfixe et l’espace de noms existent déjà dans l’étendue actuelle, la nouvelle paire de préfixes et d’espaces de noms remplace la combinaison de préfixe/espace de noms existante. La même combinaison de préfixes et d’espaces de noms peut exister dans différentes étendues.

Les paires préfixe/espace de noms suivantes sont ajoutées par défaut à l’élément XmlNamespaceManager. Ils peuvent être déterminés à n’importe quelle portée.

Préfixe Espace de noms
xmlns http://www.w3.org/2000/xmlns/ (espace de noms de préfixe xmlns)
Xml http://www.w3.org/XML/1998/namespace (espace de noms XML)
String.Empty String.Empty (espace de noms vide). Cette valeur peut être réaffectée à un préfixe différent. Par exemple, xmlns=" » définit l’espace de noms par défaut comme espace de noms vide

S’applique à

Voir aussi