Извлечение объекта XML из файла MIME Multipart - PullRequest
0 голосов
/ 07 мая 2020

Итак, я нахожусь здесь немного на перекрестке, пытаясь использовать данные в файлах, которые, насколько я понимаю (после небольшого чтения), кажутся составными soap запросами (с объектом xml как вложение?). Итак, мне дали задание работать с xml файлами, которые выглядят примерно так:

--MIME264440613829.7322990959788848043325807015

<SOAP-ENV:Envelope>
  <SOAP-ENV:Header>
    ...
  </SOAP-ENV:Header>
  <SOAP-ENV:Body>
    <eb:Manifest eb:version="2.0">
      <eb:Reference xlink:href="cid:payload-1" xlink:role="aop:ROOT"/>
    </eb:Manifest>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

--MIME264440613829.7322990959788848043325807015
Content-ID: payload-1

<?xml version="1.0" encoding="UTF-8"?>
<aop:ROOT>
...
</aop:ROOT>
--MIME264440613829.7322990959788848043325807015--

И что мне нужно сделать, так это извлечь XML в том, что кажется вторым часть (или вложение, как я думаю, люди называют это) из составного объекта.

Моя первая мысль заключалась в том, чтобы просто использовать некоторые строковые операции с, например, регулярным выражением для извлечения объекта xml, но, конечно же, должно быть лучший способ. Также я сейчас просто тестирую это в проекте c#.

1 Ответ

0 голосов
/ 08 мая 2020

Хорошо, после того, как мы связались с одним из моих коллег, нам удалось найти решение:

Вот что мы сделали

Используя HttpMultiPartParser, мы могли извлечь содержимое xml из файла по коду ниже:

using HttpMultipartParser;      

        using (var streamReader = new StreamReader(@"multipartFile.xml"))
        {
            var temp = MultipartFormDataParser.Parse(streamReader.BaseStream);
            foreach (var filepart in temp.Files)
            {
                using (var fpSr = new StreamReader(filepart.Data))
                {
                    var name = filepart.Name;
                    var contentType = filepart.ContentType;
                    var content = fpSr.ReadToEnd();
                }
            }
        }
...