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