我正在查看this问题,它给了我大约80%的所需内容。对我来说,“问题”是我的XML格式不同,我不太确定如何使用Linq来获取我需要的东西。
我的XML看起来像这样(顺便说一下,它是由ConvertTo-XMl PowerShell Cmdlet生成的)
<?xml version="1.0"?>
<Objects>
<Object>
<Property Name="Name">CompiledCode.ps1</Property>
<Property Name="LastWriteTime">5/21/2009 6:59:16 PM</Property>
</Object>
<Object>
<Property Name="Name">ComputerDrawing.ps1</Property>
<Property Name="LastWriteTime">1/13/2010 7:52:44 AM</Property>
</Object>
</Objects>
我正在尝试绑定到Silverlight DataGrid,以便列名称为“Name”和“LastWriteTime”,并且行将具有属性标记中的值。对于第一个,名称将是Compiled Code.ps1,LastWriteTime将是“5/21/2009 6:59:16 PM”
上述问题的答案有这个方法
private Status GetStatus(XElement el)
{
Status s = new Status();
s.Description = el.Attribute("Description").Value;
s.Date = DateTime.Parse(el.Attribute("Date").Value);
return s;
}
我创建了自己的名为Scripts的类,它有一个Name和一个Date,但我想弄清楚填充数据网格需要哪些元素或属性。
答案 0 :(得分:1)
这是你需要的基本要点: -
private Scripts GetScripts(XElement el)
{
Scripts s = new Scripts()
s.Name = (string)el.Elements("Property")
.Where(e => (string)e.Attribute("Name") == "Name")
.FirstOrDefault();
string lastWriteTime = (string)el.Elements("Property")
.Where(e => (string)e.Attribute("Name") == "LastWriteTime")
.FirstOrDefault();
s.LastWriteTime = DateTime.ParseExact(lastWriteTime, "M/d/yyyy h:m:s tt", CultureInfo.InvariantCulture);
}
您可能希望LastWriteTime
成为DateTime
,因此您可能希望将其置于中间字符串中并使用精确解析。