XmlDocumentから名前空間を取得する基本的な問題は、XmlDocumentのNameTable
を取得し、を作成するだけで解決できます。
しかし、他の目的で名前空間をリストしたい場合は、XmlNamespaceManager
クラスとXPathNavigator
クラスで公開されているGetNamespacesInScope
メソッドをチェックアウトする必要があります。 XmlDocumentオブジェクトを使用する場合は
、次のコードを経由して、それからてXmlNamespaceManagerを取得することができます。
//Instantiate an XmlDocument object.
XmlDocument xmldoc = new XmlDocument();
//Load XML file into the XmlDocument object.
xmldoc.Load("C:\\myFile.xml");
//Instantiate an XmlNamespaceManager object.
XmlNamespaceManager nsMgr = new XmlNamespaceManager(xmldoc.NameTable);
// Retrieve the namespaces into a Generic dictionary with string keys.
IDictionary<string, string> dic = nsMgr.GetNamespacesInScope(XmlNamespaceScope.All);
// Iterate through the dictionary.
...
In this article、スコットHanselman氏はのXPathNavigatorを使用して、ドキュメント内のすべての名前空間を一覧表示するには、このメソッドを使用する方法を提示し、 LINQブリッジを使用します。あなたの迅速な対応のための
@Ruchita:このアプローチの問題点は、名前空間の宣言を上書きすることができることです(XML 1.0では、デフォルトの名前空間宣言もXML 1でリセットできます)。1すべての名前空間宣言) –