XmlNamespaceManager.AddNamespace(String, String) Метод

Определение

Добавляет заданное пространство имен в коллекцию.

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)

Параметры

prefix
String

Префикс, который требуется связать с добавляемым пространством имен. Используйте String.Empty для добавления пространства имен по умолчанию.

Примечание. Если объект XmlNamespaceManager будет использоваться для разрешения пространств имен в выражении языка XPath, необходимо указать префикс. Если выражение XPath не содержит префикс, предполагается, что универсальным кодом ресурса (URI) для пространства имен является пустое пространство имен. Дополнительные сведения о выражениях языка XPath и XmlNamespaceManager см. в разделах с описанием методов SelectNodes(String) и SetContext(XmlNamespaceManager).

uri
String

Добавляемое пространство имен.

Исключения

Значение параметра prefix — "xml" или "xmlns".

Значение параметра prefix или urinull.

Примеры

В следующем примере используется XmlNamespaceManager для разрешения пространств имен в фрагменте 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

Комментарии

XmlNamespaceManagerне проверяет и uri не проверяет prefix соответствие требованиям.

XmlReader проверяет имена, включая префиксы и пространства имен, чтобы убедиться, что они являются допустимыми XML-именами в соответствии со спецификацией пространств имен консорциума W3C. XmlNamespaceManager используется внутренне XmlReader, поэтому во избежание дублирования усилий предполагается, XmlNamespaceManager что все префиксы и пространства имен являются допустимыми.

Если префикс и пространство имен уже существуют в текущей области, новая пара префиксов и пространств имен заменит существующее сочетание префикса или пространства имен. Одно и то же сочетание префикса и пространства имен может существовать в разных областях.

Следующие пары префиксов и пространств имен добавляются по умолчанию в XmlNamespaceManager. Их можно определить в любой области.

Prefix Пространство имен
xmlns http://www.w3.org/2000/xmlns/ (пространство имен префикса XMLNS)
Xml http://www.w3.org/XML/1998/namespace (пространство имен XML)
String.Empty String.Empty (пустое пространство имен). Это значение можно переназначить другим префиксом. Например, xmlns="" определяет пространство имен по умолчанию для пустого пространства имен.

Применяется к

См. также раздел