[英]linq to xml, read xml file
我正在努力阅读linq to xml中的这个xml文件。 有人可以在这里帮我吗。 我需要阅读每个曲目信息。
<playlist version="1" xmlns="http://xspf.org/ns/0/" xmlns:jwplayer="http://developer.longtailvideo.com/trac/wiki/FlashFormats">
<title>Some title here</title>
<creator>Some creater</creator>
<info>somesite.com</info>
<trackList>
<track>
<title>Title 1</title>
<creator>Creater 1</creator>
<location>location 1</location>
</track>
<track>
<title>Title 2</title>
<creator>Creater 2</creator>
<location>location 2</location>
</track>
</trackList>
</playlist>
这就是我想要做的。
XElement xelement1 = XElement.Load(@"pathtoxmlfile\my.xml");
IEnumerable<XElement> tracks= xelement1.Elements();
// Read the entire XML
foreach (var track in tracks.Descendants("track"))
{
Console.WriteLine(track );
Console.ReadLine();
}
我正在使用C#。
谢谢Parminder
您忘记包括名称空间名称,请进行以下更改:
XNamespace defNs = "http://xspf.org/ns/0/";
和
foreach (var track in tracks.Descendants(defNs + "track"))
XElement tracks = XElement.Load(@"pathtoxmlfile\my.xml");
foreach (var track in tracks.Descendants("track"))
{
Console.WriteLine((string)track.Element("title"));
Console.WriteLine((string)track.Element("creator"));
Console.WriteLine((string)track.Element("location"));
}
为什么将文档加载到XElement
而不是XDocument
?
您必须在查询中使用XNamespace
实例,因为您的文档使用默认的名称空间xmlns="http://xspf.org/ns/0/"
。
var ns = XNamespace.Get("http://xspf.org/ns/0/");
您可以使用LINQ查询来获取从XML文档提取的数据的集合。 然后,您可以遍历该集合并执行所需的任何操作。
var tracks = (from t in xDoc.Root.Element(ns + "trackList").Elements(ns + "track") select new { Title = (string)t.Element(ns + "title"), Creator = (string)t.Element(ns + "creator"), Location = (string)t.Element(ns + "location") }).ToList();
tracks
将是一个List<T>
,其中T
是具有3个string
属性的匿名类型: Title
, Creator
和Location
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.