2010-12-19 7 views
0

誰かが私のXML文書の値をC#変数に保存するのを手伝ってくれるかどうか疑問に思っていました。これは、より大きなプログラム機能を支援することです。 XMLのレイアウトは次のとおりです。文字列変数へのC#Xm​​l属性値

<row> 
    <var name="bud" value="45" /> 
    <var name="acc" value="345" /> 
</row> 
<row> 
    <var name="bud" value="45" /> 
    <var name="acc" value="345" /> 
</row> 

私はそれを感謝任意の助けみんなのために

おかげで芽の値を抽出し、私のC#のコードに文字列として保存したいと思います。

+0

あなたは[LINQ to XML](http://msdn.microsoft.com/en-us/library/bb387098.aspx)を探しています。 – SLaks

答えて

1

XMLは有効であり、ルート要素が追加されている必要があります。

XML:

<foo> 
<row> 
    <var name="bud" value="45" /> 
    <var name="acc" value="345" /> 
</row> 
<row> 
    <var name="bud" value="45" /> 
    <var name="acc" value="345" /> 
</row> 
</foo> 

コード:

これは "つぼみ" という名前のXML内のすべての変数 "VAR" の値を持つリストを返し、最後にカンマ区切りを作成します。すべての値を含む文字列。

 string xml = "<foo><row><var name=\"bud\" value=\"45\" /><var name=\"acc\" value=\"345\" /></row><row><var name=\"bud\" value=\"45\" /><var name=\"acc\" value=\"345\" /></row></foo>"; 
     XDocument doc = XDocument.Parse(xml); 
     var budValues =(from c in doc.Descendants("var") 
         where c.Attribute("name").Value == "bud" 
         select c.Attribute("value").Value).ToList(); 
     string myBuddy = string.Join(",", budValues); 
+0

これの(xml)は何ですか? – Ebikeneser

+0

xmlは...うーん。あなたがロードしたいxmlです、私はあなたが見ることができるようにそれを追加しました。 – BrokenGlass

1

あなたのXMLは無効です。単一のルートノードが必要です。ここで

XPathを使用してシンプルなソリューションです:

XmlDocument xDoc = new XmlDocument(); 
xDoc.LoadXml(@" 
    <dataset><row> 
     <var name=""bud"" value=""45"" /> 
     <var name=""acc"" value=""345"" /> 
    </row> 
    <row> 
     <var name=""bud"" value=""45"" /> 
     <var name=""acc"" value=""345"" /> 
    </row></dataset>"); 
XmlNode node = xDoc.SelectSingleNode("/dataset/row/var[@name='bud']"); 
string value = node.Attributes["value"].Value; 

これは、@ nameは= '芽' マッチの最初を取得します。結果を調整するにはXPathをチェックしてください。 (それはかなり強力です)

+0

ありがとう@ Sam7は確かに助けた – Ebikeneser

関連する問題