【发布时间】:2009-06-04 09:51:21
【问题描述】:
我有一个名为 content 的 XElement 变量,它由以下 XML 组成:
<content>
<title>Contact Data</title>
<p>This is a paragraph this will be displayed in front of the first form.</p>
<form idCode="contactData" query="limit 10; category=internal"/>
<form idCode="contactDataDetail" query="limit 10; category=internal">
<title>Contact Data Detail</title>
<description>This is the detail information</description>
</form>
</content>
我现在只想遍历每个 1 级节点并将它们解析为对象。回到 C# 2.0,我使用 XmlReader 来执行此操作,检查节点的类型,并相应地解析它。
但是用 LINQ 解析 XML 节点的最佳方法是什么,我希望是这样的:
var contentItems = from contentItem in pageItem.content.DescendantNodes()
select new ContentItem
{
Type = contentItem.Element()
};
foreach (var contentItem in contentItems)
{
switch (contentItem.Type)
{
case "title":
...(parse title)...
case "p":
...(parse p)...
case "form":
...(parse form)...
}
}
地点:
public class ContentItem
{
public string Type { get; set; }
public string IdCode { get; set; }
public XElement Content { get; set; }
}
【问题讨论】:
-
你到底要解析到哪里?例如,当您解析标题时......您希望值“Contact Data”去哪里?
-
当我解析标题节点时,“联系人数据”将作为 TextBlock 添加到 UserControl 中。当我解析表单节点时,将从数据库中加载 idCode="contactData" 的表单并显示等。