【问题标题】:Extracting XML object from MIME Multipart file从 MIME Multipart 文件中提取 XML 对象
【发布时间】:2020-05-07 10:16:30
【问题描述】:

所以我在这里有点十字路口,试图使用文件中的数据,据我了解(在阅读了一点之后)似乎是多部分肥皂请求(以 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】:

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

    这就是我们所做的

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

    【讨论】:

      猜你喜欢
      • 2011-04-23
      • 2015-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-07
      相关资源
      最近更新 更多