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
или uri
— null
.
Примеры
В следующем примере используется 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="" определяет пространство имен по умолчанию для пустого пространства имен. |