[英]C# getting last element's attribute values from XML
I have below XML.我有以下 XML。
<Bd>
<GEvt ZipCode="xyz" EvtDtm="2020-03-12T02:26:35+01:00"></GEvt>
<GEvt ZipCode="abc" EvtDtm="2020-03-12T02:32:35+01:00"></GEvt>
<GEvt ZipCode="def" EvtDtm="2020-03-12T02:34:35+01:00"></GEvt>
</Bd>
I dont need first two.我不需要前两个。 I only need the last one;
我只需要最后一个;
<GEvt ZipCode="def" EvtDtm="2020-03-12T02:34:35+01:00"></GEvt>
Here is my code;这是我的代码;
var lineItemDetails = xdoc.Root?.Descendants("Bd");
foreach (var lineItemDetail in lineItemDetails?.Nodes().OfType<XElement>())
{
var ZipCode = lineItemDetail?.Attribute("ZipCode")?.Value;
var EvtDtm = lineItemDetail?.Attribute("EvtDtm")?.Value;
Console.WriteLine(ZipCode);
Console.WriteLine(EvtDtm);
}
It's working fine but it's returning all 3 values from XML.它工作正常,但它从 XML 返回所有 3 个值。 However i only need the last one.
不过我只需要最后一个。 I tried to use Last() but it didnt work.
我尝试使用 Last() 但它没有用。 Using Last() bringing me last character.
使用 Last() 给我带来最后一个字符。 I need only this;
我只需要这个;
<GEvt ZipCode="def" EvtDtm="2020-03-12T02:34:35+01:00"></GEvt>
How to achieve it?如何实现? What am i missing?
我错过了什么?
Check it out.一探究竟。 It finds last
<GEvt.../>
XML element based on its position.它根据位置找到最后一个
<GEvt.../>
XML 元素。
c#
C#
void Main()
{
const string GEVT = "GEvt";
const string ZIPCODE = "ZipCode";
const string EVTDTM = "EvtDtm";
XElement xml = XElement.Parse(@"<Bd>
<GEvt ZipCode='xyz' EvtDtm='2020-03-12T02:26:35+01:00'></GEvt>
<GEvt ZipCode='abc' EvtDtm='2020-03-12T02:32:35+01:00'></GEvt>
<GEvt ZipCode='def' EvtDtm='2020-03-12T02:34:35+01:00'></GEvt>
</Bd>");
// get desired XML element
XElement lastElement = xml.Elements(GEVT).Last();
// get attributes values
string Zipcode = lastElement.Attributes(ZIPCODE).FirstOrDefault().Value;
string EvtDtm = lastElement.Attributes(EVTDTM).FirstOrDefault().Value;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.