2011-01-07 6 views
0

XMLにlinqを使ってxmlを照会するのに問題はありませんが、最初のノードが宣言で始まる特別なXMLファイルがあります。デクレーションがない場合(例:xmlns:dm0 = "http://schemas.microsoft.com/VisualStudio/2008/DslTools/Core") データのクエリを開始するにはdecandentsを使用します。次の形式で「forbiddenNamespaceDependencies」の値を取得する:私は問題が何であるかが表示されないquery最初のノードが何らかの宣言で始まる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文書を取得するために終了タグを追加しました:

<?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

関連する問題