C#Xml属性值为字符串变量

时间:2010-12-19 23:37:52

标签: c# xml

嘿,我想知道是否有人可以帮助将我的xml doc的值保存到c#变量中。这是为了帮助更大的程序功能。 XML布局是:

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

我想提取bud的值并将其作为字符串存储在我的c#code

感谢任何帮助,我很感激。

2 个答案:

答案 0 :(得分: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>

<强>代码:

这将返回一个List,其中包含名为“bud”的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);

答案 1 :(得分: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 ='bud'的第一场比赛。结帐XPath以调整您的结果。 (它非常强大)