XmlNamespaceManager.AddNamespace(String, String) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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. |