我工作的一個Silverlight Web應用程序,類似於XML的工作原理:的Silverlight C#的LINQ to XML
<?xml version="1.0" encoding="UTF-8" ?>
<ProjectList>
<Type>web</Type>
<Project>
<Id>1</Id>
<Name>test web project</Name>
<Description>test web project</Description>
<ScreenshotList>
<Screenshot>
<Path>screen1.jpg</Path>
<Description>This a description of screen 1</Description>
</Screenshot>
<Screenshot>
<Path>screen2.jpg</Path>
<Description>This a description of screen 2</Description>
</Screenshot>
<Thumb>noThumb.jpg</Thumb>
</ScreenshotList>
</Project>
</ProjectList>
我想創建一個新的對象爲XML中的每個項目元素。我有一個名爲project的類,其中包含id,name,description,thumb和所有屏幕截圖的列表字段。
我當前的LINQ代碼如下所示:
var projects = from project in xDoc.Root.Elements("Project")
select new Project(
Int32.Parse(project.Element("Id").Value, CultureInfo.InvariantCulture),
project.Element("Name").Value,
project.Element("Description").Value,
project.Element("ScreenshotList").Element("Thumb").Value
);
反正對我來說,很容易得到的截圖,這一個查詢內項目的實例將它們添加到列表中?
編輯 - 添加項目構造public Project(int id, string name, string description, string thumbPath)
{
this.id = id;
this.name = name;
this.description = description;
this.thumbPath = thumbPath;
}
注意你並不需要所有的'Int32.Parse({expr}的。價值)' - 你可以只投了'XElement' - 簡單得多,並給出了更清晰的米西行爲ng元素(你可以強制轉換爲null等) – 2009-10-13 19:29:55
對於信息 - 使用強制轉換(而不是解析)的另一個原因; 'DateTime' - 如果您投了,它會使用正確的xsd日期格式;-p – 2009-10-13 19:44:38
是的。比較查詢,使用轉換比解析更容易閱讀。 – Jason 2009-10-14 14:47:28