提取id属性字符串

时间:2014-05-01 14:08:53

标签: c# linq linq-to-xml

我正在尝试提取字符串以###开头的所有id属性(如List)。这是我的第一次尝试:

const string xml = @"<?xml version=""1.0"" encoding=""utf-8"" ?>
            <Actions>
            <Action id=""###SignIn"">1</Action>
            <Action id=""SignOut"">2</Action>
            <Action id=""###Open"">3</Action>
            </Actions>";

var xdoc = XDocument.Parse(xml);
var test = xdoc.Root.Elements()
.Where(e => e.Attribute("id").Value.StartsWith("###"))
.Select(e => e.Attribute("id").Value.StartsWith("###")).ToList();

最终,我想用字典中的值替换这些字符串(键值与xm数据中的字符串相同)。

1 个答案:

答案 0 :(得分:2)

对您尝试的Select()部分进行略微修改应该:

var xdoc = XDocument.Parse(xml);
var test = xdoc.Root
               .Elements()
               .Where(e => e.Attribute("id").Value.StartsWith("###"))
               .Select(e => e.Attribute("id")).ToList();

foreach (var t in test)
{
    //replace id attribute value with string from dictionary
    t.Value = myDictionary[t.Value];
}