В следующей программе helloElem
не является нулевым, как ожидалось.Получение элемента XML
string xml = @"<root>
<hello></hello>
</root>";
XDocument xmlDoc = XDocument.Parse(xml);
var helloElem = xmlDoc.Root.Element("hello"); //not null
Если дать XML пространство имен:
string xml = @"<root xmlns=""namespace"">
<hello></hello>
</root>";
XDocument xmlDoc = XDocument.Parse(xml);
var helloElem = xmlDoc.Root.Element("hello"); //null
почему helloElem
утратившим? Как получить элемент привет в этом случае?
Это работает, но возможно ли, чтобы код поддерживал все случаи, с/без пространств имен, а не с жесткой кодировкой пространства имен? –
@ roger.james Это как просить компилятор C# игнорировать пространства имен и просто попытаться найти соответствующий объект в вашем проекте. Как и ваши проекты, пространства имен в XML помогают отличить «конфету: бар» от «foo: bar», которые, безусловно, две разные вещи. –