使用Linq获取XML中的最后一个属性值



我的XML文件是这样的:

<?xml version="1.0" encoding="utf-8"?>
<dskh>
  <khachhang maso="kh01">
    <ten_kh>nhi</ten_kh>
    <tuoi_kh>15</tuoi_kh>
    <dchi_kh>dt</dchi_kh>
  </khachhang>
  <khachhang maso="kh02">
    <ten_kh>hung</ten_kh>
    <tuoi_kh>15</tuoi_kh>
    <dchi_kh>hcm</dchi_kh>
  </khachhang>
</dskh>

我想获得khachhang元素的最后一个属性值。在本例中为maso="kh02"。因为我想当我插入新的khachhang元素时,maso属性将增加auto。有人能给我一些好的建议吗?非常感谢大家!

或者

var xdoc = XDocument.Load(path_to_xml);
var lastElement = xdoc.Root.Elements("khachhang").Last();
var value = lastElement.Attribute("maso").Value;

注意,我总是在访问刚刚读取的元素或属性值之间进行空检查,以防万一。

var xdoc = XDocument.Load(path_to_xml);
var result = (string)xdoc.XPathSelectElement("//khachhang[last()]")
                         .Attribute("maso");

var result = (string)xdoc.Descendants("khachhang").Last()
                         .Attribute("maso");

另外,如果可能没有khachhang元素将在您的xml中,您应该尝试获得最后一个元素。如果找到khachhang元素,则获取属性:

var lastKhachhang = xdoc.Descendants("khachhang").LastOrDefault();
if (lastKhachhang == null)
    // use default maso value
else
   maso = (string)lastKhachhang.Attribute("maso");

在这种情况下使用LastOrDefault很重要。

相关内容

  • 没有找到相关文章

最新更新