簡體   English   中英

如何使用LINQ從XML提取值?

[英]How do I extract a value from XML using LINQ?

當您通過UID搜索時,我嘗試從以下XML僅返回單個結果:

<Photos>
  <Photo UID="a3d508784ff3456da7bf2ff8ce08e577">
    <Date>2014-08-22T14:00:32.7958436+01:00</Date>
    <File>a3d508784ff3456da7bf2ff8ce08e577.jpg</File>
    <CrimeRef>CR123456/14</CrimeRef>
  </Photo>
  <Photo UID="735620a99f2c4dfd9f2c1870136e993e">
    <Date>2014-08-22T14:07:29.0364635+01:00</Date>
    <File>735620a99f2c4dfd9f2c1870136e993e.jpg</File>
    <CrimeRef>CR999999/99</CrimeRef>
  </Photo>
  <Photo UID="c186993e8a0246c29dd180396dfea47b">
    <Date>2014-08-22T14:07:29.6835282+01:00</Date>
    <File>c186993e8a0246c29dd180396dfea47b.jpg</File>
    <CrimeRef>CR999999/99</CrimeRef>
  </Photo>
</Photos>

我為此使用以下代碼:

var fileList = xml.Descendants("Photo")
                  .Where(e => e.Attribute("UID") != null 
                         && (string)e.Attribute("UID").Value == ID)
                  .ToList();

var fileName = fileList[0];

問題在於fileList [0]具有整個XML元素,而不僅僅是文件名:

在此處輸入圖片說明

無論如何,有沒有做一個等效的LINQ中的“選擇文件來自” ,這將允許我只返回該元素的“文件”值? 我嘗試這樣做沒有運氣:

var fileName = fileList[0]['File'];

非常感謝

只需添加

.Select(x=>(string)x.Element("File")) 

Where之后

PS:將XElement強制轉換為類型更安全,因為即使File標記不存在,它也不會引發異常(只是返回null)

在LINQ中Select() File節點的Value屬性:

var fileList = xml.Descendants("Photo")
        .Where(e => e.Attribute("UID") != null && (string)e.Attribute("UID").Value == ID)
        .Select(n => n.Element("File").Value)
        .ToList();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM