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