如何在 XDocument 上设置命名空间

How to set namespace on XDocument

我需要访问 xml 文件。但是 xml 有前缀为 m:

的基本命名空间

这是我的代码,但它不起作用,编写 NullReference 例外:

var fileКс = XDocument.Load(somePath);
        var allDescrioptions = fileКс.Root.Element("formulas").Elements("formula").ToList();

这是 xml 文件的一部分:

    <?xml version="1.0" encoding="utf-8" ?>
<m:math xmlns:m="http://www.kontur-extern.ru/ФНС 4.0/math.xsd">
    <m:formulas>
        <m:formula target="@ПрибУб" match="/Файл/Документ/Прибыль/РасчНал" source="Лист 02/стр.060">
        </m:formula>
</m:formulas>
</m:math>

我认为需要指定命名空间,但我不知道如何

您可以使用 XNamespace 如下:

XNamespace m = "http://www.kontur-extern.ru/ФНС 4.0/math.xsd";
var fileКс = XDocument.Load(somePath);
var allDescrioptions = fileКс.Root.Element(m+"formulas").Elements(m+"formula").ToList();