我試圖使用的XDocument從這個XML文檔中的元數據獲取的命名空間:的LINQ to XML GetDefaultNamespace()返回null
<?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>
我試圖使用GetDefaultNamespace()方法的XElement像這樣:
XNamespace ns = xmlDoc.Root.GetDefaultNamespace();
但是我得到一個空值。我讀了一些評論說,因爲根名稱空間有多個名稱空間,所以可能無法使用此方法獲取元數據的名稱空間。
我以爲只嘗試抓取來自Root.Element(「元數據」)的屬性,但因爲我沒有命名空間,我認爲不起作用。
任何想法?
PS我不一定知道命名空間的原因是因爲我使用可信的nuspec文件,而且我擔心模式可能會改變。
如何獲得xmlDoc? –
你不應該擔心它可能會改變;命名空間的要點是_stable_標識符。它只會改變格式的變化(在這種情況下你的代碼會中斷)。 – SLaks
XDocument xmlDoc = XDocument.Load(xml);文件指針xml是上述xml的副本。 – JPAnderson