У меня есть несколько файлов XML для анализа, некоторые из них выглядят так:
<?xml version="1.0" encoding="UTF-8"?>
<ab:rootNode xmlns:ab="http://www.uri.com">
<ab:nodeDate>...</ab:nodeDate>
</ab:rootNode>
, а другие без пространства имен:
<?xml version="1.0" encoding="UTF-8"?>
<rootNode>
<nodeDate>...</nodeDate>
</node>
В LINQ to XMLследует уточнить пространство имен, иначе оно не будет штрафовать ни одного узла.Как управлять пространствами имен?Проверять, существует ли xmlns:ab="http://www.uri.com"
в элементе rootNode
?и если он существует, я создаю XNamespace
и добавляю его к элементу имени следующим образом (псевдокод):
XNamespace ab = "http://www.uri.com";
string prefixe = String.Empty;
if (XmlNamespaceExists(ab , "rootNode")
{
prefixe = ab;
}