Nishant.Chauhan80 Ответов: 1

Как получить конкретное изображение из XML-файла с помощью запроса linq


<?xml version="1.0" encoding="utf-8" standalone="yes"?>


<Employees>
<Employee>
    <ID>104</ID>
    <Name>Sumit</Name>
<<Image>Bytes.............</Image>
  </Employee>
  <Employee>
    <ID>105</ID>
    <Name>Ravi</Name>

<Image>Bytes.............</Image>
  </Employee>
</Employees>


код :-


private void button2_Click(object sender, EventArgs e)
      {
          XDocument doc = XDocument.Load("XMLFile/PrintLabelList.xml");
          var records = (from lablemname in doc.Root.Elements("Employee")
                         select new
                         {
                             Image = (string)lablemname.Element("Image").Value
                         }).FirstOrDefault();
          if (records != null)
          {
              string val = records.Image;
              byte[] bytes = Convert.FromBase64String(val);
              MemoryStream mem = new MemoryStream(bytes);
              Bitmap bmp2 = new Bitmap(mem);
              pictureBox1.Image = bmp2;
          }
      }


Что я уже пробовал:

Как получить конкретное изображение из xml-файла

1 Ответов

Рейтинг:
7

TheRealSteveJudge

Вы должны захватить еще несколько полей из вашего XML-документа.
Здесь также собираются идентификатор и имя.

XDocument doc = XDocument.Load("XMLFile/PrintLabelList.xml");
var records = (from lablemname in doc.Root?.Elements("Employee")
   select new
   {
      ID = lablemname.Element("ID")?.Value,
      Name = lablemname.Element("Name")?.Value,
      Image = lablemname.Element("Image")?.Value,                   
   });

Затем вы можете легко получить любой желаемый предмет например по его идентификатору
var item = records.FirstOrDefault(x => x.ID == "104");

К байтам изображения можно получить доступ следующим образом:
var imageBytes = item?.Image;


Nishant.Chauhan80

Спасибо сэр

TheRealSteveJudge

Всегда пожалуйста!