Condividi tramite


Informazioni ottenute da XmlNamespaceManager

Come mostra la tabella seguente, una volta posizionate le informazioni nell'XmlNamespaceManager, sono disponibili diversi metodi e proprietà per eseguire attività di impostazione o recupero delle informazioni.

Attività

Metodi o proprietà

Trovare il namespaceURI definito come spazio dei nomi predefinito.

Proprietà DefaultNamespace

Trovare il namespaceURI dichiarato e nell'ambito per un prefisso.

Metodo LookupNamespace

Trovare il prefisso dichiarato e nell'ambito per un namespaceURI.

Metodo LookupPrefix

Aggiungere ulteriori spazi dei nomi a XmlNamespaceManager.

Metodo AddNameSpace

Rimuovere gli spazi dei nomi da XmlNamespaceManager.

Metodo RemoveNamespace

Creare l'ambito di uno spazio dei nomi.

Metodo PushScope, Metodo PopScope

Verificare se un prefisso è definito nell'ambito corrente.

Metodo HasNamespace

Associare XmlNameTable a un oggetto XmlNamespaceManager.

Proprietà NameTable

Nell'esempio seguente viene illustrato come viene utilizzato il metodo LookupPrefix durante la scrittura di un attributo. Il metodo WriteStartAttribute viene utilizzato per avviare l'attributo e LookupPrefix viene utilizzato per consultare il prefisso per il namespaceURI urn:samples, quindi tale prefisso viene utilizzato nel WriteStartAttribute quando viene scritto l'attributo ISBN:

Dim prefix As String = nsMgr.LookupPrefix("urn:samples")
writer.WriteStartAttribute(prefix, "ISBN", "urn:samples")
XmlNameTable nt = new XmlNameTable();
XmlNamespaceManager nsMgr = new XmlNamespaceManager(nt);
nsMgr.AddNamespace("bk","urn:samples");string prefix = writer nsMgr.LookupPrefix("urn:samples");
writer.WriteStartAttribute(prefix, "ISBN", "urn:samples");

Nell'esempio seguente viene utilizzato LookupPrefix per trovare il prefisso definito in un elemento.

writer.WriteStartElement("root", "book")
writer.WriteStartElement("x", "node", "author")
s = writer.LookupPrefix("author")
CError.Compare(s, "x", "Error in nested element")
writer.WriteEndElement()
s = writer.LookupPrefix("book")
CError.Compare(s, Nothing, "Error in root element")
writer.WriteEndElement()
writer.WriteStartElement("root", "book");
writer.WriteStartElement("x", "node", "author");
s = writer.LookupPrefix("author");
CError.Compare(s, "x", "Error in nested element");
writer.WriteEndElement();
s = writer.LookupPrefix("book");
CError.Compare(s, null, "Error in root element");
writer.WriteEndElement();

Output

<root xmlns="book">
  <x:node xmlns:x="author" /> 
</root>

Nell'esempio seguente viene illustrato come aggiungere uno spazio dei nomi, utilizzando il metodo AddNamespace e come fornire allo spazio dei nomi un ambito specifico utilizzando i metodi PushScope e PopScope.

Public Sub Main()
        Dim nametable As NameTable = New NameTable()
        Dim nsm As XmlNamespaceManager = New XmlNamespaceManager(nametable)
        ' Add a default namespace.
        nsm.AddNamespace(String.Empty, "www.microsoft.com")
        nsm.AddNamespace("msbooks", "www.microsoft.com/books")
        'Push the namespace scope on the stack.
        nsm.PushScope()
        nsm.AddNamespace("msstore", "www.microsoft.com/store")
        checkns(nsm)
        nsm.PopScope()
        checkns(nsm)

        Dim response As String = Console.ReadLine

End Sub

Public Sub checkns(ByVal nsm As XmlNamespaceManager)
        If nsm.HasNamespace(String.Empty) Then
            Console.WriteLine("DefaultNamespace in scope")
        Else
            Console.WriteLine("DefaultNamespace not in scope")
        End If
        If nsm.HasNamespace("msstore") Then
            Console.WriteLine("www.microsoft.com/store"" in scope")
        Else
            Console.WriteLine("www.microsoft.com/store not in scope")
        End If
        If nsm.HasNamespace("msbooks") Then
            Console.WriteLine("www.microsoft.com/books in scope")
        Else
            Console.WriteLine("www.microsoft.com/books not in scope")
        End If
End Sub
 
XmlNameTable nt = new XmlNameTable();
XmlNamespaceManager nsmanager = new XmlNamespaceManager(nt);
//Add a default namespace.
nsmanager.AddNamespace (String.Empty, "www.microsoft.com"); 
nsmanager.AddNamespace ("msbooks", "www.microsoft.com/books");
nsmanager.PushScope();
nsmanager.AddNamespace ("msstore", "www.microsoft.com/store");
checkns(nsmanager);
nsmanager.PopScope();
checkns(nsmanager);

checkns(XmlNamespaceManager nsm)
{
    if (nsm.HasNamespace(String.Empty))
        Console.WriteLine("DefaultNamespace in scope");
    else
        Console.WriteLine("DefaultNamespace not in scope");
    if (nsm.HasNamespace("msstore"))
        Console.WriteLine(""www.microsoft.com/store"" in scope");
    else
        Console.WriteLine(""www.microsoft.com/store"" not in scope");
    if (nsm.HasNamespace("msbooks"))
        Console.WriteLine(""www.microsoft.com/books"" in scope");
    else
        Console.WriteLine(""www.microsoft.com/books"" not in scope");
}

Output

DefaultNamespace not in scope
www.microsoft.com/store" in scope
www.microsoft.com/books not in scope
DefaultNamespace in scope
www.microsoft.com/store not in scope
www.microsoft.com/books in scope

Nell'esempio seguente vengono enumerati tutti i prefissi nell'ambito corrente, in cui sono elencate anche tre ulteriori coppie di spazi dei nomi e prefissi. Queste tre coppie di spazi dei nomi e prefissi predefiniti vengono aggiunte automaticamente al gestore dello spazio dei nomi al momento della creazione.

Dim nametable As NameTable = New NameTable()
Dim nsm As XmlNamespaceManager = New XmlNamespaceManager(nametable)
'Add a default namespace.
nsm.AddNamespace("xmlabc", "www.microsoft.com")
Dim prefix As String
For Each prefix In nsm
    Console.WriteLine("Namespace:{0}, Prefix:{1}", nsm.LookupNamespace(nsm.NameTable.Get(prefix)), prefix)
Next
NameTable nametable = new NameTable();
XmlNamespaceManager nsm = new XmlNamespaceManager(nametable);
//Add a default namespace.
nsm.AddNamespace("xmlabc", "www.microsoft.com"); 
foreach (String prefix in nsm)
    {
        Console.WriteLine("Namespace:{0}, Prefix:{1}",nsm.LookupNamespace(nsm.NameTable.Get(prefix)), prefix);
    }

Output

Namespace:http://www.w3.org/XML/1998/namespace, Prefix:xml
Namespace:http://www.w3.org/2000/xmlns/, Prefix:xmlns 
Namespace:, Prefix: 
Namespace:www.microsoft.com, Prefix:xmlabc

Vedere anche

Concetti

Spazi dei nomi in un documento XML

Dichiarazioni dello spazio dei nomi

Spazi dei nomi predefiniti

Ambito di validità della dichiarazione di uno spazio dei nomi

Gestione degli spazi dei nomi con XmlNamespaceManager