XmlNamespaceManager.AddNamespace(String, String) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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 |