XmlDocument에서 네임 스페이스를 검색하는 기본적인 문제는 XmlDocument의 NameTable
을 검색하여 XmlNameSpaceManager
을 만드는 것만으로 해결할 수 있습니다.
그러나 다른 목적으로 네임 스페이스를 나열하려면 XPathNavigator
클래스뿐만 아니라 XmlNamespaceManager
클래스로 노출되는 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 모든 네임 스페이스 선언) –