[帮助]修复xml文件中有关元素/节点值的代码. [英] [Help] Fix a code about value of element/node in xml file.
问题描述
大家好,我有一个文件数据库为xml的文件,我将其添加到我的Project Winform C#中,现在我想在调试它时显示元素/节点bookID的值具有通过文本框中的Encryption MD5或SHA方法加密.你明白 ?现在这里是xml文件,图片演示和代码,请为我修复,非常感谢:
Hi all, a have a 1 file database xml, I add it to my Project Winform C#, now I want when I debug it show a value of element/node bookID had Encryption by method Encryption MD5 or SHA in textbox, Are you understand ? Now here is xml file, picture demo and code, please fix for me, thank very much:
<?xml version="1.0" encoding="utf-8"?>
<data>
<book>
<bookID>1111</bookID>
<bookName>English</bookName>
<bookPrice>2$</bookPrice>
</book>
<book>
<bookID>222</bookID>
<bookName>USA</bookName>
<bookPrice>3$</bookPrice>
</book>
<book>
<bookID>3333</bookID>
<bookName>Singapore</bookName>
<bookPrice>4$</bookPrice>
</book>
</data>
这是我调试时的图片,它还没有加密bookID:
http://i1055.photobucket.com/albums/s505/vn_photo/sss.jpg
这是调试完成后我想要的图片:
http://i1055.photobucket.com/albums/s505/vn_photo/sse.jpg
这是我的代码:
Here is a picture when I debug, it haven''t still encryption bookID:
http://i1055.photobucket.com/albums/s505/vn_photo/sss.jpg
Here is picture required I want when debug finish:
http://i1055.photobucket.com/albums/s505/vn_photo/sse.jpg
Here is my code:
private void Form1_Load(object sender, EventArgs e)
{
//LoadXml("book.xml");
XmlDocument xml = new XmlDocument();
xml.Load("book.xml");
XmlNodeList xnList = xml.SelectNodes("/data[bookID]");
foreach (XmlNode xn in xnList)
{
XmlNode encryption = xn.SelectSingleNode("bookID");
if (encryption != null)
{
string pass = encryption["bookID"].InnerText;
XmlNodeList CNodes = xn.SelectNodes("book");
foreach (XmlNode node in CNodes)
{
XmlNode encryption1 = node.SelectSingleNode("bookID");
if (encryption1 != null)
{
string md5 = EncrypSHA1(encryption1["bookID"].InnerText);
}
}
}
}
xml.Save("book.xml");
LoadXml("book.xml");
}
private void LoadXml(string FILE_NAME)
{
if (!File.Exists(FILE_NAME))
{
MessageBox.Show("No find database!", "Notify!", MessageBoxButtons.OKCancel, MessageBoxIcon.Error);
return;
}
StreamReader sr = File.OpenText(FILE_NAME);
String input;
input = sr.ReadToEnd();
sr.Close();
textBox1.Text = input;
}
private static string EncrypSHA1(string sMaHoa)
{
UTF32Encoding utf32 = new UTF32Encoding();
byte[] bytes = utf32.GetBytes(sMaHoa);
//Encoding.UTF32.GetBytes(
SHA1 md = new SHA1CryptoServiceProvider();
MD5 md5 = new MD5CryptoServiceProvider();
byte[] kq = md.ComputeHash(bytes);
byte[] kq2 = md5.ComputeHash(kq);
return Convert.ToBase64String(kq2);
}
推荐答案
</bookPrice> </book> < book> < bookID> 222</bookID> < bookName>美国</bookName> < bookPrice> 3
</bookPrice> </book> <book> <bookID>222</bookID> <bookName>USA</bookName> <bookPrice>3
</bookPrice> </book> < book> < bookID> 3333</bookID> < bookName>新加坡</bookName> < bookPrice> 4
</bookPrice> </book> <book> <bookID>3333</bookID> <bookName>Singapore</bookName> <bookPrice>4
</bookPrice> </book> </data>
</bookPrice> </book> </data>
这是我调试时的图片,它还没有加密bookID:
http://i1055.photobucket.com/albums/s505/vn_photo/sss.jpg
这是调试完成后我想要的图片:
http://i1055.photobucket.com/albums/s505/vn_photo/sse.jpg
这是我的代码:
Here is a picture when I debug, it haven''t still encryption bookID:
http://i1055.photobucket.com/albums/s505/vn_photo/sss.jpg
Here is picture required I want when debug finish:
http://i1055.photobucket.com/albums/s505/vn_photo/sse.jpg
Here is my code:
private void Form1_Load(object sender, EventArgs e)
{
//LoadXml("book.xml");
XmlDocument xml = new XmlDocument();
xml.Load("book.xml");
XmlNodeList xnList = xml.SelectNodes("/data[bookID]");
foreach (XmlNode xn in xnList)
{
XmlNode encryption = xn.SelectSingleNode("bookID");
if (encryption != null)
{
string pass = encryption["bookID"].InnerText;
XmlNodeList CNodes = xn.SelectNodes("book");
foreach (XmlNode node in CNodes)
{
XmlNode encryption1 = node.SelectSingleNode("bookID");
if (encryption1 != null)
{
string md5 = EncrypSHA1(encryption1["bookID"].InnerText);
}
}
}
}
xml.Save("book.xml");
LoadXml("book.xml");
}
private void LoadXml(string FILE_NAME)
{
if (!File.Exists(FILE_NAME))
{
MessageBox.Show("No find database!", "Notify!", MessageBoxButtons.OKCancel, MessageBoxIcon.Error);
return;
}
StreamReader sr = File.OpenText(FILE_NAME);
String input;
input = sr.ReadToEnd();
sr.Close();
textBox1.Text = input;
}
private static string EncrypSHA1(string sMaHoa)
{
UTF32Encoding utf32 = new UTF32Encoding();
byte[] bytes = utf32.GetBytes(sMaHoa);
//Encoding.UTF32.GetBytes(
SHA1 md = new SHA1CryptoServiceProvider();
MD5 md5 = new MD5CryptoServiceProvider();
byte[] kq = md.ComputeHash(bytes);
byte[] kq2 = md5.ComputeHash(kq);
return Convert.ToBase64String(kq2);
}
这篇关于[帮助]修复xml文件中有关元素/节点值的代码.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!