2011-11-08 10 views
1

最終的には、各noed属性値と既存の値リストを比較することによって、NODESの全リストからフィルタリングされた新しいXMLファイルを作成することが目的です。 私の問題は次のとおりです: 特定のノードの値を読み取って、それを動的変数値 と比較できますが、その後、その値をラッピングして新しいXMLファイルにコピーするタグを読み取る必要があります。値を比較することで取得するLinqからXMLへのXMLノードの塗りつぶしとコピー

<Rule Id="2" On="a1" PL="3305" ActionResult="enabled"> 
<Members Operation=""><Member QId="a2" Operation="In" Attribute="checked">true 
</Member></Members></Rule></Rules> 

と私のコードは次のとおりです。

var ElementsList = from Elements in xdoc.Descendants("Members") 
where Elements.Element("Member").FirstAttribute.Value == "rbtn_G9000_1_11_1201__2" 
select Elements.Element("Member"); 

これは私のノード自体のコードを与えるだろう、私はラッピングノード(ルール)を取得するコードが必要です。.. 。

どうすればいいですか?クエリの

答えて

0

ややクリーナーバージョン:

var ElementsList = 
    from els in xdoc.Descendants("Members") 
    let member = els.Element("Member") 
    where member.FirstAttribute.Value == "rbtn_G9000_1_11_1201__2" 
    select member.Parent 

は(意図した属性名を推測し、未テストコード)http://msdn.microsoft.com/en-us/library/system.xml.linq.xelement.aspx

しかし、簡単に参照してください:

// assuming some variable like: 
var qid = "rbtn_G9000_1_11_1201__2"; 


var query = string.Format("/Rule/Members/Member[@QId='{0}']/..", qid); 
var ElementsList = from member in 
    xdoc.XPathSelectElements(query); 
関連する問題