如何将xml数据附加到xml文件中 [英] How to append xml data into xml file
问题描述
我正在尝试将集合类转换为 xml 数据并将该 xml 数据附加到 xml 文件这是我的功能'
I am trying to convert collection class to xml data and append that xml data to xml file here is my function'
public void XmlWriter(List<Email> Femails)
{
string ErrorXmlFile = @"../../Retries.xml";
try
{
if (!File.Exists(ErrorXmlFile))
{
XmlSerializer xSeriz = new XmlSerializer(typeof(List<Email>));
FileStream fs = File.Open(ErrorXmlFile, FileMode.Append, FileAccess.Write, FileShare.ReadWrite);
xSeriz.Serialize(fs, Femails);
}
else
{
foreach(Email email in Femails)
{
XmlDocument doc = new XmlDocument();
doc.Load(ErrorXmlFile);
XmlNode xnode = doc.CreateNode(XmlNodeType.Element, "ArrayOfEmail", null);
XmlSerializer xSeriz = new XmlSerializer(typeof(Email));
StringWriter sw = new StringWriter();
xSeriz.Serialize(sw,email);
xnode.InnerXml = Convert.ToString(sw);
doc.DocumentElement.AppendChild(xnode);
doc.Save(ErrorXmlFile);
}
}
}
catch (Exception ex)
{
throw ex;
}
}
在上面的函数中,femail"是一个列表的参数,其中电子邮件是用户定义的自定义类.第一次检查文件是否存在.如果没有,那么它现在可以正常工作,但是当我需要将数据附加到现有文件时,它会失败.
In the above function "femail" is parameter of a List, where Email is userdefind custom class. First time it checks if the file is existing or not. If not then it works fine now but when i need to append data to my existing file it fails.
根据我上面的代码,它将单个电子邮件对象转换为带有 <?xml version="1.0" encoding="utf-16"?>
的 xml 数据,并带有我想要的标签绑定前删除.
As per my above code it converts single Email object to xml data with <?xml version="1.0" encoding="utf-16"?>
with this tags which i want to remove before bind.
我从代码中得到的输出是:
The output i got from my code is:
<?xml version="1.0"?>
<ArrayOfEmail xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Email>
<UtcDateTime>2013-01-23T10:09:48+05:30</UtcDateTime>
<From>Rajendra Bhalekar <rajendra.b000@gmail.com></From>
<To>Mansha Suman <asdmansha@gmail.com></To>
<Subject>Ye dil sun raha hai jo mere dil ki hai sada ye...socha tha na maine......</Subject>
<IDX>32a84ef7-31bf-4366-bcab-ec10b2f39bc6</IDX>
<Body>
Hi Raj,
Dil pe mat le yaar dil pe mat le....
idx:32a84ef7-31bf-4366-bcab-ec10b2f39bc6
odhani chunariya tere naam ki - Pyar kiya to darna kya
sona sona telephone dhun pe hasne wali - hidustaniREPLY ABOVE THIS LINEdil
ibadat kar raha hai
Thanks & regards,
Raj
</Body>
<ExtractReplyText>Hi Raj,Dil pe mat le yaar dil pe mat le....idx:32a84ef7-31bf-4366-bcab-ec10b2f39bc6odhani chunariya tere naam ki - Pyar kiya to darna kya</ExtractReplyText>
</Email>
<ArrayOfEmail>
<?xml version="1.0" encoding="utf-16"?>
<Email xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<UtcDateTime>2013-01-23T10:09:48+05:30</UtcDateTime>
<From>Rajendra Bhalekar <rajendra.b000@gmail.com></From>
<To>Mansha Suman <asdmansha@gmail.com></To>
<Subject>Ye dil sun raha hai jo mere dil ki hai sada ye...socha tha na maine......</Subject>
<IDX>32a84ef7-31bf-4366-bcab-ec10b2f39bc6</IDX>
<Body>
Hi Raj,
Dil pe mat le yaar dil pe mat le....
idx:32a84ef7-31bf-4366-bcab-ec10b2f39bc6
odhani chunariya tere naam ki - Pyar kiya to darna kya
sona sona telephone dhun pe hasne wali - hidustaniREPLY ABOVE THIS LINEdil
ibadat kar raha hai
Thanks & regards,
Raj
</Body>
<ExtractReplyText>Hi Raj,Dil pe mat le yaar dil pe mat le....idx:32a84ef7-31bf-4366-bcab-ec10b2f39bc6odhani chunariya tere naam ki - Pyar kiya to darna kya</ExtractReplyText>
</Email></ArrayOfEmail>
</ArrayOfEmail>
这不是我所期望的.请建议我需要更正.
Which is not as i am expecting. Please suggest me required corrections.
推荐答案
我的问题现在解决了,这段代码对我有用
My problam is solve now and this code is working for me
public void XmlWriter(List<Email> Femails)
{
#region On Error Retry and retrycount with xml file
string ErrorXmlFile = @"../../Retries.xml";
try
{
if (!File.Exists(ErrorXmlFile))
{
XmlSerializer xSeriz = new XmlSerializer(typeof(List<Email>));
FileStream fs = File.Open(ErrorXmlFile, FileMode.Append, FileAccess.Write, FileShare.ReadWrite);
xSeriz.Serialize(fs, Femails);
foreach (Email email in Femails)
{
SaveAttachment(email);
}
}
else
{
XmlDocument doc = new XmlDocument();
doc.Load(ErrorXmlFile);
foreach (Email email in Femails)
{
XmlNode xnode = doc.CreateNode(XmlNodeType.Element, "BLACKswastik", null);
XmlSerializer xSeriz = new XmlSerializer(typeof(Email));
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
XmlWriterSettings writtersetting = new XmlWriterSettings();
writtersetting.OmitXmlDeclaration = true;
StringWriter stringwriter = new StringWriter();
using (XmlWriter xmlwriter = System.Xml.XmlWriter.Create(stringwriter, writtersetting))
{
xSeriz.Serialize(xmlwriter, email, ns);
}
xnode.InnerXml = stringwriter.ToString();
XmlNode bindxnode = xnode.SelectSingleNode("Email");
doc.DocumentElement.AppendChild(bindxnode);
SaveAttachment(email);
}
doc.Save(ErrorXmlFile);
}
}
catch (Exception ex)
{
throw ex;
}
#endregion
}
这篇关于如何将xml数据附加到xml文件中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!