次の方法で共有


XmlNameTable を使用したオブジェクトの比較

XmlDocuments は、作成時に、そのドキュメント専用に作成された名前テーブルを持ちます。 XML がドキュメントに読み込まれるか、新しい要素または属性が作成されると、属性と要素の名前が XmlNameTable に格納されます。 別のドキュメントの既存の NameTable を使用して XmlDocument を作成することもできます。 XmlNameTable パラメーターを受け取るコンストラクターを使用して XmlDocuments が作成されると、ドキュメントは既に XmlNameTable に格納されているノード名、名前空間、およびプレフィックスにアクセスできます。 名前テーブルの名前の読み込み方法に関係なく、名前がテーブルに格納されると、文字列比較ではなくオブジェクト比較を使用して名前をすばやく比較できます。 Addを使用して、名前テーブルに文字列を追加することもできます。 次のコード サンプルは、作成される名前テーブルと、テーブルに追加される 文字列 MyString を示しています。 その後、そのテーブルを使用して XmlDocument が作成され、 Myfile.xml内の 要素と属性の名前が既存の名前テーブルに追加されます。

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");  

次のコード例は、ドキュメントの作成、ドキュメントに追加される 2 つの新しい要素、ドキュメント名テーブルへの追加、および名前のオブジェクト比較を示しています。

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))  
{ ...  

上記の 2 つのドキュメント間で渡される名前テーブルのシナリオは、E コマース サイトでドキュメントを注文するなど、同じ種類のドキュメントを繰り返し処理する場合に一般的です。これは、XML スキーマ定義言語 (XSD) スキーマまたはドキュメント型定義 (DTD) に準拠し、同じ文字列が繰り返されます。 同じ名前のテーブルを使用すると、同じ要素名が複数のドキュメントで発生するパフォーマンスが向上します。

こちらも参照ください