从 MIME 多部分文件中提取 XML 对象

Extracting XML object from MIME Multipart file

所以我在这里有点十字路口,试图使用文件中的数据,根据我的理解(稍微阅读之后)似乎是多部分肥皂请求(使用 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# 项目中对此进行测试。

好的,所以在联系了我的一位同事之后,我们设法找到了解决方案:

这就是我们所做的

使用 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();
                }
            }
        }