1
我需要读取msg文件的主体并将其转换为xml文件。我使用下面的代码将msg文件转换为xml文件。 我能够获取xml文件,但问题是空行显示在输出xml文件中。 我用RegEx删除字符串中的空行。在调试过程中,我可以看到空白行从字符串中删除。但是在将该字符串加载为xml文件后,我在xml文件中获得空白行。附上示例xml文件的图像。删除xml文档中的空行
string[] filePaths = Directory.GetFiles(@"C:\Projects\Userdata\Source Folder\", "*.msg");
for (int i = 0; i < filePaths.Length; ++i)
{
string path = filePaths[i];
string fname = System.IO.Path.GetFileName(path);
_Application outlook = new ApplicationClass();
MailItem item = (MailItem)outlook.CreateItemFromTemplate(path, Type.Missing);
string b = item.Body;
string formatbody = System.Text.RegularExpressions.Regex.Replace(b, @"^\s+$[\r\n]*", "", RegexOptions.Multiline);
XDocument doc1 = XDocument.Parse(formatbody,LoadOptions.PreserveWhitespace);
var xs = doc1.Elements();
string test = string.Empty;
foreach (var x in xs)
{
test += x.ToString();
}
XmlDocument doc = new XmlDocument();
doc.LoadXml(test);
doc.Save(@"C:\Projects\Destination Folder\" + fname + ".xml");
}
身体.msg文件看起来像这样
<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="gateway_transaction_display.xsl"?>
<File>
<File_Type>AP PAYMENTS</File_Type>
<File_Header_Record>
<File_Format_Version>0002</File_Format_Version>
<Creation_Module>0286-14</Creation_Module>
</File_Header_Record>
<Transaction>
<Transaction_Type>FT_TRANS_IMP</Transaction_Type>
<Transaction_Header>
<Record_Number>1</Record_Number>
<Urgent>Y</Urgent>
</Transaction_Header>
<Model_Info>
<Model_ID><![CDATA[FF DOM INT PAY]]></Model_ID>
</Model_Info>
<Transfer_Info>
<Charges>15</Charges>
</Transfer_Info>
<Amounts>
<Transaction_Amount>
<Amount>4665786.22</Amount>
<Currency>CAD</Currency>
</Transaction_Amount>
</Amounts>
<Dates>
<Trusted_Source>Y</Trusted_Source>
<Value_Date>2014-03-31</Value_Date>
</Dates>
<Bank_Account>
<Bank_Account_Type>DR</Bank_Account_Type>
<Bank>
<Bank_Route_Code>
<Code_Type>Y</Code_Type>
</Bank_Route_Code>
</Bank>
<Account>
<Account_ID>FF01</Account_ID>
</Account>
</Bank_Account>
<Bank_Account>
<Bank_Account_Type>CR</Bank_Account_Type>
<Bank>
<Bank_Route_Code>
<Code_Type>Y</Code_Type>
</Bank_Route_Code>
</Bank>
<Account>
<Account_ID>D039</Account_ID>
</Account>
</Bank_Account>
<Payment_Details_Or_Addenda>
<Details_Text><![CDATA[Unapplied
cash & intercompany settlemet]]></Details_Text>
</Payment_Details_Or_Addenda>
</Transaction>
<File_Trailer_Record>
<File_Name>AP PAYMENTS</File_Name>
</File_Trailer_Record>
</File>
如果删除正则表达式的IAM得到错误 “数据在根级别是无效的。第5行,位置1”。 – user3859666
你能显示你的消息文件吗?我认为这可能是根元素中的命名空间问题。 –
<?XML版本= “1.0” 编码= “ISO-8859-1”?> <?xml样式表型= “文本/ XSL” HREF = “gateway_transaction_display.xsl”?> AP PAYMENTS 0002 File_Format_Version> 0286-14 Creation_Module> File_Header_Record> 这是我试图处理该文件。你能告诉我如何添加图像,如果你想看到完整的XML文件和msg文件 –
user3859666