2011-08-05 82 views
0

我遇到问题。我有一个XML电子表格文件,我试图通过电子邮件发送。所以我转换成二进制文件并将其附加到电子邮件。问题是当我试图打开它(在Excel上)时,它没有显示我保存的数据。当我打开它像一个XML文件,我意识到,它没有保存XML头:
的方式应该是:将XML文件转换为二进制格式文件后XML标头丢失

<?xml version="1.0" encoding="utf-8"?> 
<?mso-application progid="Excel.Sheet"?> 
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40"> 
... 
<Styles> 
... 
</Styles> 
<Worksheet> 
... 
</Worksheet></Workbook> 


转换后:

<Worksheet> 
... 
</Worksheet> 

我试着使用xmldocument,但我没有工作,我也尝试使用字符串,仍然无法正常工作。
这就是我的XML转换为二进制:

UTF8Encoding encoding = new UTF8Encoding(); 
binaryFile = encoding.GetBytes(xmlFile); 

我怎样才能解决这个问题呢? 谢谢。

+3

我认为你对相关概念有些误解。但没有更多的细节,很难指引你朝着正确的方向前进。举个例子:在将它们附加到电子邮件之前,不需要转换xml文件。你为什么这么认为? – Achim

+0

我想将XML文件附加到电子邮件中,所以我需要将该文件转换为二进制数组,以便使用MailMessage类将其附加到电子邮件中。 – danny

回答

0

我发现我的错误:我没有序列化XML文件,所以这就是为什么在转换后它只显示没有XML头的数据。所以有两种方法可以解决这个问题: 首先,我们可以将头与数据串连接起来,或者我们可以使用serialize函数。 This is where I've found how to do it

1

我想我们需要更多关于如何转换XML文件的信息。

从您的描述中可以看出,您已将Excel电子表格保存为XML,无论出于何种原因,您都无法将此文本文档附加到电子邮件中。我的猜测是你正在使用一种方法来附加需要一个字节数组的XML文件,而不能仅仅提供一个文件位置。如果你能提供更多关于这方面的信息,它会帮助我们找出事情出错的地方。

我真的很憋屈的部分是:

我试图使用XmlDocument的,但我没有工作,我也尝试 使用字符串,仍然没有工作。

你是怎么试字符串的?您是否使用FileStream从磁盘读取文件?如果是这样,你应该能够检索文件的全部内容。

您是否在整个过程中使用XmlDocument并试图使用XmlDocument.OuterXml?这可能不会给你控制标题,因为它们不是根节点内的XM​​L主体的一部分。

所以真的有两件事我会尝试。首先,如果我有在磁盘上的XML文件,并通过代码和我唯一的选择将其附加到电子邮件需要的是提供一个字节数组,我会做一些事情,如:

using (FileStream fs = new FileStream("", FileMode.Open, FileAccess.Read)) 
{ 
    byte[] binaryFile = new byte[fs.Length]; 
    fs.Read(binaryFile, 0, buff.LongLength); 

    //Copy the byte array to your email object. 
} 

现在,如果这ISN” t你在做什么,你需要提供更多关于你开始的细节(磁盘上的文件?),你需要做什么(发送自动化的电子邮件?),你有什么约束和任何其他信息这会限制潜在的解决方案。