private readonly static string xmlFile = @"d:\showXml.xml";
private void button1_Click(object sender, EventArgs e)
{
try
{
string fileName = @"D:\121.PNG"; FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Read);
byte[] image = new byte[fs.Length];
fs.Read(image, 0, System.Convert.ToInt32(fs.Length));
fs.Close();
writeToXML(image);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
//
}
} private void button2_Click(object sender, EventArgs e)
{
readXML();
} private void readXML()
{
XmlDocument xmldoc = new XmlDocument();
string fileContent = File.ReadAllText(xmlFile).Trim();
xmldoc.LoadXml(fileContent);
string picStr = xmldoc.SelectSingleNode("*/message_id").InnerText;
Byte[] temp = Encoding.ASCII.GetBytes(picStr);
MemoryStream buf = new MemoryStream(temp);
Image image = Image.FromStream(buf, true);
pictureBox1.Image = image;
} private void writeToXML(byte[] imageByte)
{
XmlDocument xmlDoc = new XmlDocument();
string fileContent = File.ReadAllText(xmlFile).Trim();
xmlDoc.LoadXml(fileContent);
XmlNode xe = xmlDoc.SelectSingleNode("*/message_id");
xe.InnerText = Encoding.ASCII.GetString(imageByte);
xmlDoc.Save(xmlFile);
}
XML:
<?xml version="1.0" encoding="UTF-8"?>
<message>
<message_id></message_id>
</message>
private void button1_Click(object sender, EventArgs e)
{
try
{
string fileName = @"D:\121.PNG"; FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Read);
byte[] image = new byte[fs.Length];
fs.Read(image, 0, System.Convert.ToInt32(fs.Length));
fs.Close();
writeToXML(image);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
//
}
} private void button2_Click(object sender, EventArgs e)
{
readXML();
} private void readXML()
{
XmlDocument xmldoc = new XmlDocument();
string fileContent = File.ReadAllText(xmlFile).Trim();
xmldoc.LoadXml(fileContent);
string picStr = xmldoc.SelectSingleNode("*/message_id").InnerText;
Byte[] temp = Encoding.ASCII.GetBytes(picStr);
MemoryStream buf = new MemoryStream(temp);
Image image = Image.FromStream(buf, true);
pictureBox1.Image = image;
} private void writeToXML(byte[] imageByte)
{
XmlDocument xmlDoc = new XmlDocument();
string fileContent = File.ReadAllText(xmlFile).Trim();
xmlDoc.LoadXml(fileContent);
XmlNode xe = xmlDoc.SelectSingleNode("*/message_id");
xe.InnerText = Encoding.ASCII.GetString(imageByte);
xmlDoc.Save(xmlFile);
}
XML:
<?xml version="1.0" encoding="UTF-8"?>
<message>
<message_id></message_id>
</message>
这一句总会报无效的参数
{
XmlDocument xmldoc = new XmlDocument();
string fileContent = File.ReadAllText(xmlFile).Trim();
xmldoc.LoadXml(fileContent);
string picStr = xmldoc.SelectSingleNode("*/message_id").InnerText;
int numberChars = picStr.Length;
byte[] bytes = new byte[numberChars / 2];
for (int i = 0; i < numberChars; i += 2)
{
bytes[i / 2] = Convert.ToByte(picStr.Substring(i, 2), 16);
} MemoryStream buf = new MemoryStream(bytes);
Image image = Image.FromStream(buf, true);
pictureBox1.Image = image;
} private void writeToXML(byte[] imageByte)
{
XmlDocument xmlDoc = new XmlDocument();
string fileContent = File.ReadAllText(xmlFile).Trim();
xmlDoc.LoadXml(fileContent);
XmlNode xe = xmlDoc.SelectSingleNode("*/message_id");
StringBuilder sb = new StringBuilder();
foreach (byte b in imageByte)
{
sb.AppendFormat("{0:x2}", b);
}
xe.InnerText = sb.ToString();
xmlDoc.Save(xmlFile);
}
这样读跟写都没有问题,可是生成的XML会比图片大一倍,请问有什么办法解决么?只能用二进制来存,不能用base64