c# – Linq to XML撤回存在于不同级别的属性
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – Linq to XML撤回存在于不同级别的属性,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1949字,纯文字阅读大概需要3分钟。
内容图文
![c# – Linq to XML撤回存在于不同级别的属性](/upload/InfoBanner/zyjiaocheng/811/111e338879be4de6b322c44d6f544341.jpg)
我正在尝试编写一个Linq to XML查询,该查询返回关键字并包含一个属性(mediatype)
考虑以下XML数据……
<?xml version="1.0" encoding="utf-8"?>
<media>
<photos>
<photo mediatype="photo" photographer="Jag_cz" description="Colored splashes in abstract shape, isolated on white background" id="16" name="50623755_F.jpg" folder="HR Headset">
<keywords>
<keyword>fish</keyword>
<keyword>abstract</keyword>
</keywords>
</photo>
</photos>
<videos>
<video mediatype="video" description="Bear by a stream" folder="streamfolder" name="stream.mp4">
<keywords>
<keyword>stream</keyword>
<keyword>river</keyword>
<keyword>water</keyword>
</keywords>
</video>
<video mediatype="video" description="Stream with a bear" folder="bearfolder" name="bear.mp4">
<keywords>
<keyword>salmon</keyword>
<keyword>fish</keyword>
</keywords>
</video>
</videos>
</media>
有照片元素和视频元素.每个元素都有一个mediattype属性.
我想用它的媒体类型回读每个关键字的查询.
像这样的东西……
mediatype keyword
--------- -------
photo fish
photo abstract
video stream
video river
video water
video salmon
video fish
我已经能够使用以下代码撤回关键字…
using System;
using System.Xml.Linq;
using System.Linq;
class Program
{
public static void Main(string[] args)
{
String strPath = @"C:\videodata\media.xml";
XElement xEle = XElement.Load(strPath);
var keywordquery = from k in xEle.Descendants("keyword")
select new
{
keyword = (string)k.Value
};
foreach (var k in keywordquery)
{
Console.WriteLine(k.keyword);
}
Console.WriteLine("Press <enter> to continue");
Console.ReadLine();
}
}
但是,我坚持要退回mediatype属性.此属性与关键字位于不同的级别.
解决方法:
你可以这样做:
var query= xEle.Descendants().Where(e=>e.Name=="photo" || e.Name=="video")
.SelectMany(e=>e.Descendants("keyword")
.Select(x=>new {mediatype=e.Name,
keyword=x.Value
}));
总之,您首先选择名称为照片和视频的所有节点,然后根据每个元素,您需要获取内部关键字.使用SelectMany扩展方法,您将结果展平,最终只获得一个集合
内容总结
以上是互联网集市为您收集整理的c# – Linq to XML撤回存在于不同级别的属性全部内容,希望文章能够帮你解决c# – Linq to XML撤回存在于不同级别的属性所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。