Condividi tramite


Confronto di oggetti con XmlNameTable

XmlDocuments, al momento della creazione, ha una tabella dei nomi creata in modo specifico per tale documento. Quando il codice XML viene caricato nel documento o vengono creati nuovi elementi o attributi, gli attributi e i nomi degli elementi vengono inseriti in XmlNameTable. È anche possibile creare un xmlDocument usando una tabella NameTable esistente da un altro documento. Quando XmlDocuments viene creato con il costruttore che accetta un parametro XmlNameTable , il documento ha accesso ai nomi dei nodi, agli spazi dei nomi e ai prefissi già archiviati in XmlNameTable. Indipendentemente dal modo in cui la tabella dei nomi viene caricata con i nomi, dopo che i nomi vengono archiviati nella tabella, i nomi possono essere confrontati rapidamente usando il confronto tra oggetti anziché il confronto tra stringhe. È anche possibile aggiungere stringhe alla tabella dei nomi usando .Add Nell'esempio di codice seguente viene illustrata una tabella dei nomi creata e la stringa MyString aggiunta alla tabella. Successivamente, viene creato un XmlDocument usando tale tabella e i nomi di elemento e attributo in Myfile.xml vengono aggiunti alla tabella dei nomi esistente.

Dim nt As New NameTable()  
nt.Add("MyString")  
Dim doc As New XmlDocument(nt)  
doc.Load("Myfile.xml")  
NameTable nt = new NameTable();  
nt.Add("MyString");  
XmlDocument doc = new XmlDocument(nt);  
doc.Load("Myfile.xml");  

Nell'esempio di codice seguente viene illustrata la creazione di un documento, due nuovi elementi aggiunti al documento, che li aggiunge anche alla tabella dei nomi del documento e il confronto degli oggetti sui nomi.

Dim doc1 As XmlDocument = imp.CreateDocument()  
Dim node1 As XmlElement = doc.CreateElement("node1")  
Dim doc2 As XmlDocument = imp.CreateDocument()  
Dim node2 As XmlElement = doc.CreateElement("node2")  
if (CType(node1.Name, object) = CType(node2.Name, object))  
XmlDocument doc1 = imp.CreateDocument();  
node1 = doc1.CreateElement ("node1");  
XmlDocument doc2 = imp.CreateDocument();  
node2 = doc2.CreateElement ("node1");  
if (((object)node1.Name) == ((object)node2.Name))  
{ ...  

Lo scenario precedente di una tabella dei nomi passata tra due documenti è tipico quando lo stesso tipo di documento viene elaborato ripetutamente, ad esempio i documenti di ordine in un sito di e-commerce, che sono conformi a uno schema XSD (XML Schema Definition Language) o alla definizione del tipo di documento (DTD) e le stesse stringhe vengono ripetute. L'uso della stessa tabella dei nomi offre un miglioramento delle prestazioni, perché lo stesso nome di elemento si verifica in più documenti.

Vedere anche