我试图使用XDocument从这个xml文档中的元数据中获取命名空间:
<?xml version="1.0" encoding="utf=8"?>
<package xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<metadata xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<id>NugetName</id>
<version>1.0.0</version>
<authors>company</authors>
<owners>company</owners>
</metadata>
<files>
...
</files>
</package>
我尝试过使用XElement中的GetDefaultNamespace()方法,如下所示:
XNamespace ns = xmlDoc.Root.GetDefaultNamespace();
但是我得到一个空值。我读了一些注释,说因为根命名空间有多个命名空间,所以可能无法使用这种方法获取元数据的命名空间。
我想尝试从Root.Element(&#34;元数据&#34;)中抓取属性,但因为我没有使用我认为无法工作的命名空间。
有什么想法吗?
PS我之所以不知道命名空间的原因是因为我正在使用受信任的nuspec文件,而且我担心架构可能会发生变化。
答案 0 :(得分:2)
xmlDoc.Root
是<package>
元素
它没有默认命名空间。
您想要xmlDoc.Root.Elements().First().GetDefaultNamespace()
。