Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Получить все namespace из XML


Автор: Dray 13.8.2010, 19:07
Как программно на C# из Xml документа получить список всех namespace'ов вместе с их префиксами?

Автор: diadiavova 14.8.2010, 08:40
В разных областях видимости одни и те же префиксы могут ссылаться на разные пространства имен, кроме того, одному и тому же пространству может быть сопоставлено несколько префиксов даже в одной области видимости. Таким образом, в одном документе однозначного соответствия префиксов и пространств имен может и не быть. 

А вообще каждый узел имеет свойство NamespaceURI, а так же методы GetNamespaceOfPrefix и GetPrefixOfNamespace, которые позволяют разрешать все вопросы с пространствами и префиксами для той области видимости, в которой находится этот узел.

Для документа, в котором заведомо нет вышеописанных конфликтов можно сделать примерно следующее
Код

    var xdoc = new XmlDocument();
    xdoc.Load("c:/docpath/filename.xml");
    var ns = (from XmlNode n in xdoc.SelectNodes("//node()")
             select new
             {
                 Prefix = n.GetPrefixOfNamespace(n.NamespaceURI),
                 Namespace = n.NamespaceURI
             }).Distinct();

Код не проверял, но думаю идея ясна.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)