Это стандартное поведение для любой технологии запросов XML, включая XLINQ. Любые пространства имен, которые вы объявляете внутри документа, не влияют на пространства имен, используемые API запросов. Вы всегда должны сообщать запрашивающему API отдельно о пространствах имен, которые вы хотите, чтобы он распознал. Для встроенного XML VB.NET используется оператор Imports
. В C # вместо этого создается экземпляр объекта XNamespace
, поскольку специальный синтаксис VB.NET является просто синтаксическим сахаром над различными конструкторами XObject
.
IIRC. Причина этого заключается в том, что документ, возможно, не был создан вами, поэтому вы не можете заранее предсказать, какие префиксы пространства имен могут использовать автор документа. Единственное, что можно сделать, это сообщить вашему API запросов, какие префиксы пространства имен использовать для запросов.