XML-ридер с использованием C # - PullRequest
0 голосов
/ 31 октября 2019

У меня есть файл XML с содержимым примера следующим образом:

ФАЙЛ XML

<?xml version="1.0" encoding="utf-8"?>
<Response>
  <ResId>20191030101856000_03937</ResId>
  <Result>
    <MapHistory>
      <MapEntry BIBID="0330004004003"
                MapID="0330004004003__22906V6G01__20191028101446000_03634__000"
                EventID="0330004004003__22906V6G01__20191028101446000_03634" ProgressiveID="0" >
        <ResId>20191028101446000_03634</ResId>
        <Method>GET</Method>
        <BIBStatus>0</BIBStatus>
        <Lotnumber>22906V6G01</Lotnumber>
        <MapType>bibloading</MapType>
        <EquipmentType>BLU36</EquipmentType>
        <EquipmentName>MB10SM_ATPS</EquipmentName>
        <InsertionTimestamp>2019-10-28 10:14:46</InsertionTimestamp>
        <IdRun></IdRun>
        <EndCause></EndCause>
      </MapEntry>
      <MapEntry BIBID="0330004004003"
                MapID="0330004004003__22906V6G01__20191028101446000_03634__001"
                EventID="0330004004003__22906V6G01__20191028101446000_03634" ProgressiveID="1" >
        <ResId>20191028101536000_03636</ResId>
        <Method>POST</Method>
        <BIBStatus>2</BIBStatus>
        <Lotnumber>22906V6G01</Lotnumber>
        <MapType>bibloaded</MapType>
        <EquipmentType>BLU36</EquipmentType>
        <EquipmentName>MB10SM_ATPS</EquipmentName>
        <InsertionTimestamp>2019-10-28 10:15:36</InsertionTimestamp>
        <IdRun></IdRun>
        <EndCause>1</EndCause>
      </MapEntry>
    </MapHistory>
  </Result>
</Response>

Я просмотрел множество примеров, но ни один из них не выглядит вполневерно, и, похоже, существуют десятки различных методов, некоторые из которых используют XmlReader, некоторые XmlTextReader, а некоторые не используют ни того, ни другого. Поскольку я впервые читаю XML-файл, я подумал, что могу спросить, может ли кто-нибудь дать мне указатель. Мне нужно прочитать все элементы в MapEntry, но я застрял на этом.

CODE

XElement xml = XElement.Load(xmlFile);

            var nodes = (from n in xml.Descendants("MapEntry").
                        Where(r => r.Parent.Attribute("ProgressiveID").Value == "0")
                         select new
                         {
                             ResID = (string)n.Element("ResId").Value,
                             Method = (string)n.Element("Method").Value,
                             BIBStatus = (string)n.Element("BIBStatus").Value,
                             LotNumber = (string)n.Element("Lotnumber").Value,
                             MapType = (string)n.Element("MapType").Value,
                             EquipmentType = (string)n.Element("EquipmentType").Value,
                             EquipmentName = (string)n.Element("EquipmentName").Value,
                             InsertionTimeStamp = (string)n.Element("InsertionTimestamp").Value
                         }).ToList();

            foreach (var n in nodes)
            {
                //write to table    
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...