Мы можем перечислить все пространства имен с помощью следующего метода:
public static class NamespaceGetter
{
public static IDictionary<string, string> Get(string xml)
{
XPathDocument x = new XPathDocument(new StringReader(xml));
XPathNavigator foo = x.CreateNavigator();
foo.MoveToFollowing(XPathNodeType.Element);
return foo.GetNamespacesInScope(XmlNamespaceScope.All);
}
}
Однако, если для параметра string xml
пространство имен не определено, этот метод будет выброшен.
Например, следующая полезная нагрузка вызовет исключение
<MyXml>
<Cars>4</Cars>
<Burgers>3</Burgers>
</MyXml>
Как проверить, имеет ли строка пространство имен XML, определенное как AT ALL?
Вывод для вышеупомянутого вернет:
Это действительно не имеет смысла.