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

问题描述 投票:0回答:1

所以我在这里遇到了一些麻烦,试图消耗文件中的数据,据我的理解(读了一点之后),文件中的数据似乎是多部分的肥皂请求(带有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#项目中对此进行测试。

c# xml soap .net-core multipart
1个回答
0
投票

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

所以这就是我们所做的

使用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();
                }
            }
        }
© www.soinside.com 2019 - 2024. All rights reserved.