【发布时间】:2021-09-17 15:31:13
【问题描述】:
如何选择每个带有<tweet> 元素的<Event> 并从下面的xml 文件中跳过<facebook-status-update> 并使用LINQ 显示其中的值?假设 xml 文件中有很多不同的事件,我只想选择 <Event> 和 <tweet> 元素及其内容
XML 文件内容:
<?xml version="1.0"?>
<Letter>
<Body>
<Event>
<eventid>ID1</eventid>
<tweet>
<text>Tweet update</text>
<location>
<lat>123</lat>
<long>456</long>
</location>
<datetimestamp>datetimestamp</datetimestamp>
</tweet>
</Event>
<Event>
<eventid>ID2</eventid>
<facebook-status-update>
<text>facebook status update</text>
<location>
<lat>789</lat>
<long>101</long>
</location>
<datetimestamp>datetimestamp</datetimestamp>
</facebook-status-update>
</Event>
<Event>
<eventid>ID3</eventid>
<tweet>
<text>Tweet update</text>
<location>
<lat>121</lat>
<long>314</long>
</location>
<datetimestamp>datetimestamp</datetimestamp>
</tweet>
</Event>
</Body>
</Letter>
我正在使用 TwitterEvent 类来存储它自己的从 xml 文件中获取的事件值,并且我只能使用这个 C# 代码选择第一个 <tweet> 元素:
XDocument xmldoc = XDocument.Load(@"C:\Users\JACK\source\repos\LINQToObject\LINQToObject\Resources\xmlFile.xml");
var someEvents = (from _event in xmldoc.Descendants("Body").Elements("Event")
select new TwitterEvent
{
EventID = _event.Element("eventid").Value,
TweetText = _event.Descendants("tweet").Elements("text").First().Value,
Latitude = _event.Descendants("location").Elements("lat").First().Value,
Longitude = _event.Descendants("location").Elements("long").First().Value,
DateTimeStamp = _event.Descendants("tweet").Elements("datetimestamp").First().Value
});
预期输出:
ID1 Tweet update 123 456 datetimestamp
ID3 Tweet update 121 314 datetimestamp
【问题讨论】:
标签: c# xml linq linq-to-xml