创建实体的最佳方式使用LINQ XML对象 [英] Best way to create entity objects from xml using LINQ
本文介绍了创建实体的最佳方式使用LINQ XML对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下code创建从源代码 XML
对象的列表。我可以得到需要的结果在 VAR查询
变量。什么是创造最好的方式名单,其中,视频>
从这个结果
注:preFER 方法链接
办法如果可能的话
code
类节目
{
静态无效的主要(字串[] args)
{
字符串xmlStringInput = @< videoShop>
<视频标题=VIDEO1,路径=视频\ video1.wma><董事GT; Speilberg< /董事GT;< /视频>
<视频标题=视频2,路径=视频\ video2.wma/>
&所述; / videoShop>中;
的XDocument myDoc = XDocument.Parse(xmlStringInput);
VAR videoElements =(从myDoc.Descendants视频(视频)选择视频).ToList();
的foreach(在videoElements VAR videoEle)
{
//System.Xml.XPath命名空间XPathSelectElement
VAR directorName = videoEle.XPathSelectElement(@董事);
}
VAR的查询=从视频中myDoc.Descendants(视频)
选择新
{
MyTitle = video.Attribute(标题),价值,
mypath中= video.Attribute(路径)。值
};
// IEnumerable的<的XElement>元素=(IEnumerable的<的XElement>)查询;
//名单,其中,视频> videoLibrary =(名单<视频>)query.ToList<视频>();
Console.WriteLine(查询);
到Console.ReadLine();
}
}
实体
公共类视频
{
公共字符串MyTitle {获得;组; }
公共字符串mypath中{获得;组; }
}
参考
- <一个href="http://stackoverflow.com/questions/299747/whats-the-most-efficient-way-to-locate-and-set-element-values-in-an-xdocument">What's最有效的方法,在一个XDocument定位并设置元素的值?
- <一个href="http://stackoverflow.com/questions/2542184/how-do-i-get-a-list-of-child-elements-from-xdocument-object">How做我从XDocument对象的子元素的列表?
- 创建的XML对象
- <一个href="http://stackoverflow.com/questions/1980263/c-sharp-linq-with-xml-cannot-extract-multiple-fields-with-same-name-into-object?rq=1">C# LINQ和XML,不能提取具有相同名称为对象 多个领域
- <一个href="http://stackoverflow.com/questions/4251215/how-to-get-xelements-value-and-not-value-of-all-child-nodes">How让所有的孩子节点的XElement的价值,而不是价值?
解决方案
VAR的查询=从VIN myDoc.Descendants(视频)
选择新视频
{
MyTitle =(字符串)v.Attribute(标题),
mypath中=(字符串)v.Attribute(路径)
};
// VAR是指名单,其中,视频&GT;这里
变种结果= query.ToList();
或者没有查询
变量:
//变种意味着名单,其中,视频&GT;这里
VAR的结果=(从VIN myDoc.Descendants(视频)
选择新视频
{
MyTitle =(字符串)v.Attribute(标题),
mypath中=(字符串)v.Attribute(路径)
})了ToList()。
方法为基础的查询:
VAR的结果= myDoc.Descendants(视频)
。选择(V =&gt;新建视频()
{
MyTitle =(字符串)v.Attribute(标题),
mypath中=(字符串)v.Attribute(路径)
})了ToList()。
I have following code for creating a list of objects from source XML
. I can get the requires result in var query
variable. What is the best way to create a List<Video>
from this result?
Note: Prefer Method Chaining
approach if possible.
CODE
class Program
{
static void Main(string[] args)
{
string xmlStringInput = @"<videoShop>
<video title=""video1"" path=""videos\video1.wma""><Director>Speilberg</Director></video>
<video title=""video2"" path=""videos\video2.wma""/>
</videoShop>";
XDocument myDoc = XDocument.Parse(xmlStringInput);
var videoElements = (from video in myDoc.Descendants("video") select video).ToList();
foreach (var videoEle in videoElements)
{
//System.Xml.XPath namespace for XPathSelectElement
var directorName = videoEle.XPathSelectElement(@"Director");
}
var query = from video in myDoc.Descendants("video")
select new
{
MyTitle = video.Attribute("title").Value,
MyPath = video.Attribute("path").Value
};
//IEnumerable<XElement> elements = (IEnumerable<XElement>)query;
//List<Video> videoLibrary = (List<Video>)query.ToList<Video>();
Console.WriteLine(query);
Console.ReadLine();
}
}
Entity
public class Video
{
public string MyTitle { get; set; }
public string MyPath { get; set; }
}
REFERENCE:
- What's the most efficient way to locate and set element values in an XDocument?
- How do I get a list of child elements from XDocument object?
- Creating objects from XML
- C# LINQ with XML, cannot extract multiple fields with same name into object
- How to get XElement's value and not value of all child-nodes?
解决方案
var query = from vin myDoc.Descendants("video")
select new Video
{
MyTitle = (string)v.Attribute("title"),
MyPath = (string)v.Attribute("path")
};
// var means List<Video> here
var results = query.ToList();
Or without query
variable:
// var means List<Video> here
var results = (from vin myDoc.Descendants("video")
select new Video
{
MyTitle = (string)v.Attribute("title"),
MyPath = (string)v.Attribute("path")
}).ToList();
Method-based query:
var results = myDoc.Descendants("video")
.Select(v => new Video()
{
MyTitle = (string)v.Attribute("title"),
MyPath = (string)v.Attribute("path")
}).ToList();
这篇关于创建实体的最佳方式使用LINQ XML对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文