2011-01-07 23 views
0

我沒有問題使用linq to xml來查詢xml,但是我有這個特殊的xml文件,其第一個節點以聲明開頭。如果沒有declation(例如:xmlns:dm0 =「http://schemas.microsoft.com/VisualStudio/2008/DslTools/Core」) 我只是使用decandents來開始查詢數據。我的問題是,如何查詢XML例如:下面的格式獲得「forbiddenNamespaceDependencies」的價值:查詢XML,其第一個節點以某種聲明開頭

<?xml version="1.0" encoding="utf-8"?> 

<layerModel xmlns:dm0="http://schemas.microsoft.com/VisualStudio/2008/DslTools/Core"> 


<layers> 
<layer Id="6c1b89f1-9204-4914-a721" name="Layer1" forbiddenNamespaceDependencies="NameSpace1"> 
    <references>... 

回答

0

我看不出有什麼問題。我把你的片段,並添加結束標記來獲得這樣看一個良好的XML文檔:

<?xml version="1.0" encoding="utf-8"?> 

<layerModel xmlns:dm0="http://schemas.microsoft.com/VisualStudio/2008/DslTools/Core"> 


    <layers> 
    <layer Id="6c1b89f1-9204-4914-a721" name="Layer1" forbiddenNamespaceDependencies="NameSpace1"> 
     <references> 
     ... 
     </references>> 
    </layer> 
    </layers> 
</layerModel> 

然後下面的C#代碼

XDocument doc = XDocument.Load(@"..\..\XMLFile1.xml"); 
    Console.WriteLine(doc.Root.Element("layers").Element("layer").Attribute("forbiddenNamespaceDependencies").Value); 

輸出「forbiddenNamespaceDependencies」屬性就好的價值,根元素上的名稱空間聲明並不重要,因爲您的示例中沒有元素或屬性在該名稱空間中。

如果您仍有問題,請考慮發佈足夠的細節,以便我們重現問題。

+0

謝謝。我在做doc.descendants,只有在格式如下所示的情況下才有效: ...沒有任何根目錄屬性。您的解決方案doc.root的作品 – user282807 2011-01-08 17:30:52

相關問題