zoukankan
html css js c++ java
一个用于读写配置文件的类
该类适应读写如下格式的.xml,.config文档
<?
xml version
=
"
1.0
"
encoding
=
"
utf-8
"
standalone
=
"
no
"
?>
<!--
This
is
a config file ,writer by furenjun
-->
<
configuration
>
<
appSettings
>
<
add key
=
"
SqlStr0
"
value
=
"
0
"
/>
<
add key
=
"
SqlStr1
"
value
=
"
1
"
/>
<
add key
=
"
2006-7-3 16:05:08
"
value
=
"
1
"
/>
</
appSettings
>
</
configuration
>
using
System;
using
System.Configuration ;
using
System.Reflection ;
using
System.Xml;
using
System.IO;
using
System.Collections.Specialized;
using
System.Collections;
using
System.Data ;
using
System.Diagnostics;
using
System.Windows.Forms;
namespace
读写配置文件
{
/**/
///
<summary>
///
MrfuRWXmlFile 的摘要说明。
///
</summary>
public
class
MrfuRWXmlFile
{
public
static
string
ConfigFullName
=
""
;
private
NameValueCollection appSettings
=
null
;
public
MrfuRWXmlFile()
{
//
//
TODO: 在此处添加构造函数逻辑
//
//
Assembly MyAssembly= Assembly.GetExecutingAssembly();
//
string ConfigLocPath=MyAssembly.Location;
//
string strDireName=Path.GetDirectoryName(ConfigLocPath) ;
//
//
MessageBox.Show(ConfigLocPath+"\n"+strDireName) ;
//
ConfigFullName=ConfigLocPath+".config";
ConfigFullName
=
Application.StartupPath
+
@"
\myProject.config
"
;
//
MessageBox.Show(ConfigFullName) ;
}
private
static
void
CreateNewXmlFile()
{
XmlTextWriter myXmlTextWriter
=
new
XmlTextWriter (ConfigFullName, System.Text.Encoding.UTF8 );
myXmlTextWriter.Formatting
=
Formatting.Indented;
myXmlTextWriter.WriteStartDocument(
false
);
//
设置standalone="no"
//
当为(true)时 <?xml version="1.0" standalone="yes" ?>
//
myXmlTextWriter.WriteDocType("bookstore", null, "books.dtd", null);
myXmlTextWriter.WriteComment(
"
This is a config file ,writer by furenjun
"
);
myXmlTextWriter.WriteStartElement(
"
configuration
"
);
myXmlTextWriter.WriteStartElement(
"
appSettings
"
,
null
);
'写入其它元素'
#region
'写入其它元素'
//
myXmlTextWriter.WriteAttributeString("genre","autobiography");
//
myXmlTextWriter.WriteAttributeString("publicationdate","1979");
//
myXmlTextWriter.WriteAttributeString("ISBN","0-7356-0562-9");
//
myXmlTextWriter.WriteElementString("title", null, "The Autobiography of Mark Twain");
//
myXmlTextWriter.WriteStartElement("Author", null);
//
myXmlTextWriter.WriteElementString("first-name", "Mark");
//
myXmlTextWriter.WriteElementString("last-name", "Twain");
//
myXmlTextWriter.WriteEndElement();
//
myXmlTextWriter.WriteElementString("price", "7.99");
#endregion
myXmlTextWriter.WriteEndElement();
myXmlTextWriter.WriteEndElement();
//
Write the XML to file and close the myXmlTextWriter
myXmlTextWriter.Flush();
myXmlTextWriter.Close();
}
public
MrfuRWXmlFile(
string
ConfigFilePath)
{
//
//
TODO: 在此处添加构造函数逻辑
//
ConfigFullName
=
ConfigFilePath;
}
public
string
GsConfigFilePath
{
get
{
return
ConfigFullName;}
set
{ConfigFullName
=
value;}
}
//
初始化xml文档
//
首先请右击"项目"-->添加一个新项-->选择"应用程序配置文件"-->点击确定
public
static
bool
CreateXmlFile()
{
if
(
!
File.Exists(ConfigFullName) )
CreateNewXmlFile();
bool
bflag
=
true
;
ConfigXmlDocument configXmlDoc
=
new
ConfigXmlDocument();
//
XmlDocument();
configXmlDoc.Load(ConfigFullName) ;
//检查结点是否存在
#region
//
检查结点是否存在
//
//
XmlNodeList xList=configXmlDoc.SelectNodes ("
//
appSettings");
//
可以根据实际需要更改它的查找范围.如SelectNodes("
//
User")
//
XmlNodeList xList=configXmlDoc.DocumentElement.ChildNodes ;
//
//
//
if (xList.Count> 0)
//
{
//
//
//
foreach(XmlNode node in xList)
//
{
//
if(node.Name =="appSettings")
//
MessageBox.Show ("找到");
//
return;
//
}
//
}
//
else
//
{
//
MessageBox.Show("no nodes") ;
//
}
//
//
XmlNode root2 = configXmlDoc.FirstChild;
//
//
//
Display the contents of the child nodes.
//
if (root2.HasChildNodes)
//
{
//
string strs="";
//
for (int i=0; i<root2.ChildNodes.Count; i++)
//
{
//
strs+=(root2.ChildNodes[i].InnerText)+"\n";
//
}
//
MessageBox.Show(strs) ;
//
}
#endregion
XmlNode appSettingsNode;
appSettingsNode
=
configXmlDoc.SelectSingleNode(
"
configuration/appSettings
"
);
if
(appSettingsNode.LocalName
==
"
appSettings
"
)
//
或者(appSettingNode!=null)
{
//
如果xml文档中已存在该结点则采用选择定位该结点的方法
appSettingsNode.RemoveAll();
//
MessageBox.Show(appSettingsNode.LocalName) ;
}
else
{
//
Create a new element node.
XmlNode newElem;
newElem
=
configXmlDoc.CreateNode(XmlNodeType.Element,
"
appSettings
"
,
""
);
//
newElem.InnerText = "290";
//
"Add the new element to the document
"
XmlElement root
=
configXmlDoc.DocumentElement;
root.AppendChild(newElem);
//
("Display the modified XML document
");
//
Console.WriteLine(configXmlDoc.OuterXml);
appSettingsNode
=
newElem;
}
try
{
for
(
int
i
=
0
; i
<
2
; i
++
)
{
string
key
=
"
SqlStr
"
+
i.ToString() ;
string
val
=
i.ToString() ;
//
创建结点
XmlNode node
=
configXmlDoc.CreateNode(XmlNodeType.Element,
"
add
"
,
""
);
//
创建属性"key"并为其赋值
XmlAttribute attr
=
configXmlDoc.CreateAttribute(
"
key
"
);
attr.Value
=
key;
node.Attributes.Append(attr);
//
创建属性"value"并为其赋值
attr
=
configXmlDoc.CreateAttribute(
"
value
"
);
attr.Value
=
val;
node.Attributes.Append(attr);
appSettingsNode.AppendChild(node);
}
configXmlDoc.Save(ConfigFullName);
//
MessageBox.Show("创建Xml文档结点成功.","系统提示",MessageBoxButtons.OK ,MessageBoxIcon.Information ) ;
}
catch
(Exception ex)
{
bflag
=
false
;
throw
new
ConfigurationException(ex.ToString() );
}
return
bflag;
}
private
void
LoadFromFile()
{
//
if (appSettings == null)
//
{
try
{
//
string filePath=@"E:\淄博市鲁中机动车检测中心数据联网软件\FromHlk\读写配置文件\ConfigurationSettingsRW_demo\ConfigurationSettingsRW_demo\ConfigurationSettingsRW.exe.config";
ConfigXmlDocument configXml
=
new
ConfigXmlDocument();
//
XmlDocument();
//
configXml.Load(filePath);
//
this.configFilePath);
configXml.Load(ConfigFullName);
//
MessageBox.Show(ConfigFullName ) ;
XmlNode appSettingsNode
=
configXml.SelectSingleNode(
"
configuration/appSettings
"
);
//
MessageBox.Show(appSettingsNode.LocalName) ;
if
(appSettingsNode.LocalName
==
"
appSettings
"
)
{
NameValueSectionHandler handler
=
new
NameValueSectionHandler();
appSettings
=
new
NameValueCollection((NameValueCollection)handler.Create(
null
,
null
, appSettingsNode));
}
}
catch
(Exception ex)
{
throw
new
ConfigurationException(
"
Error while loading appSettings. Message:
"
+
ex.Message, ex);
}
//
}
}
/**/
///
<summary>
///
获取配置文件中的结点"appSettings"中的值
///
</summary>
///
<returns></returns>
public
DataTable GetSettingsValue()
{
LoadFromFile();
DataTable tblAppSettings
=
new
DataTable(
"
Settings
"
) ;
tblAppSettings.Columns.Add(
"
key
"
,
typeof
(System.String));
tblAppSettings.Columns.Add(
"
value
"
,
typeof
(System.String));
for
(
int
i
=
0
; i
<
appSettings.Count; i
++
)
{
string
key
=
appSettings.GetKey(i);
string
val
=
appSettings.Get(i);
DataRow row
=
tblAppSettings.NewRow();
row[
"
key
"
]
=
key;
row[
"
value
"
]
=
val;
tblAppSettings.Rows.Add(row);
}
return
tblAppSettings;
}
/**/
///
<summary>
///
添加一条新的纪录
///
</summary>
///
<param name="strKey"></param>
///
<param name="strValue"></param>
///
<returns></returns>
public
bool
AddNewRecorder(
string
strKey,
string
strValue)
{
bool
bflag
=
true
;
XmlDocument configXmlDoc
=
new
XmlDocument();
configXmlDoc.Load(ConfigFullName) ;
XmlNode appSettingsNode;
appSettingsNode
=
configXmlDoc.SelectSingleNode(
"
configuration/appSettings
"
);
if
(appSettingsNode
==
null
)
{
//
Create a new element node.
XmlNode newElem;
newElem
=
configXmlDoc.CreateNode(XmlNodeType.Element,
"
appSettings
"
,
""
);
//
newElem.InnerText = "290";
//
"Add the new element to the document
"
XmlElement root
=
configXmlDoc.DocumentElement;
root.AppendChild(newElem);
//
("Display the modified XML document
");
//
Console.WriteLine(configXmlDoc.OuterXml);
appSettingsNode
=
newElem;
}
try
{
string
key
=
strKey;
string
val
=
strValue;
//
创建结点
XmlNode node
=
configXmlDoc.CreateNode(XmlNodeType.Element,
"
add
"
,
""
);
//
创建属性"key"并为其赋值
XmlAttribute attr
=
configXmlDoc.CreateAttribute(
"
key
"
);
attr.Value
=
key;
node.Attributes.Append(attr);
//
创建属性"value"并为其赋值
attr
=
configXmlDoc.CreateAttribute(
"
value
"
);
attr.Value
=
val;
node.Attributes.Append(attr);
appSettingsNode.AppendChild(node);
configXmlDoc.Save(ConfigFullName);
//
MessageBox.Show("创建Xml文档结点成功.","系统提示",MessageBoxButtons.OK ,MessageBoxIcon.Information ) ;
}
catch
(Exception ex)
{
bflag
=
false
;
throw
new
ConfigurationException(ex.ToString() );
}
return
bflag;
}
/**/
///
<summary>
///
Loops through the
<code>
appSettings
</code>
NameValueCollection
///
and recreates the XML nodes of the <appSettings> config
///
section accordingly. It saves the configuration file afterwards.
///
</summary>
private
void
SaveToFile()
{
if
(appSettings
!=
null
)
{
try
{
XmlDocument configXml
=
new
XmlDocument();
configXml.Load(ConfigFullName);
XmlNode appSettingsNode
=
configXml.SelectSingleNode(
"
configuration/appSettings
"
);
appSettingsNode.RemoveAll();
for
(
int
i
=
0
; i
<
appSettings.Count; i
++
)
{
string
key
=
appSettings.GetKey(i);
string
val
=
appSettings.Get(i);
XmlNode node
=
configXml.CreateNode(XmlNodeType.Element,
"
add
"
,
""
);
XmlAttribute attr
=
configXml.CreateAttribute(
"
key
"
);
attr.Value
=
key;
node.Attributes.Append(attr);
attr
=
configXml.CreateAttribute(
"
value
"
);
attr.Value
=
val;
node.Attributes.Append(attr);
appSettingsNode.AppendChild(node);
}
configXml.Save(ConfigFullName);
}
catch
(Exception ex)
{
throw
new
ConfigurationException(
"
Error while saving appSettings.
"
, ex);
}
}
}
/**/
///
<summary>
///
更新一条纪录
///
</summary>
///
<param name="strKey"></param>
///
<param name="strNewValue"></param>
///
<returns></returns>
public
bool
UpdateRecorder(
string
strKey,
string
strNewValue)
{
bool
flag
=
true
;
try
{
appSettings[strKey]
=
strNewValue;
SaveToFile();
}
catch
(System.Exception err)
{
flag
=
false
;
throw
new
Exception(err.ToString() ) ;
}
return
flag;
}
/**/
///
<summary>
///
读取一个值
///
</summary>
///
<param name="strKey"></param>
///
<returns></returns>
public
string
ReadSettingsValue(
string
strKey)
{
LoadFromFile();
return
appSettings[strKey].ToString();
}
public
bool
SaveDataGridChange(DataTable myTable)
{
bool
flag
=
true
;
myTable.AcceptChanges();
try
{
//
Recreating the config.AppSettings collection with the data contained in appSettings DataGrid.
appSettings.Clear();
foreach
(DataRow row
in
myTable.Rows)
{
appSettings[row[
"
key
"
].ToString()]
=
row[
"
value
"
].ToString();
}
//
Saving the appSettings data into the configuration file.
SaveToFile();
}
catch
(System.Exception err)
{
flag
=
false
;
throw
new
Exception (err.ToString() );
}
return
flag;
}
// private void getTableChange(DataTable table)
#region
//
private void getTableChange(DataTable table)
//
{
//
//
string missingFields = "";
//
StringCollection columnNames = new StringCollection();
//
foreach (DataColumn col in table.Columns)
//
{
//
//
if (missingFields.Length == 0)
//
missingFields = col.ColumnName;
//
else
//
missingFields += ", " + col.ColumnName;
//
//
}
//
//
if (missingFields.Length > 0)
//
{
//
throw new Exception("Unable to update nodes with datatable because the nodes are missing the fields: "+missingFields);
//
}
//
//
//
/
//
//
/ Remove nodes that got deleted from datatable
//
//
/
//
DataTable currTable = table.GetChanges(DataRowState.Deleted);
//
if (currTable != null)
//
{
//
//
Trace.WriteLine("Rows Deleted:");
//
foreach (DataRow row in table.Rows)
//
{
//
string keyValue = row[0].ToString();
//
//
Trace.WriteLine(keyValue);
//
//
}
//
}
//
//
//
/
//
//
/ Update nodes with changes made on the datatable
//
//
/
//
currTable = table.GetChanges(DataRowState.Modified);
//
if (currTable != null)
//
{
//
//
Trace.WriteLine("Rows Changed:");
//
foreach (DataRow row in currTable.Rows)
//
{
//
//
}
//
}
//
//
//
/
//
//
/ Add new nodes to match new rows added to datatable
//
//
/
//
currTable = table.GetChanges(DataRowState.Added);
//
if (currTable != null)
//
{
//
//
string keyValue;
//
//
Trace.WriteLine("Rows Added:");
//
foreach (DataRow row in currTable.Rows)
//
{
//
//
}
//
}
//
table.AcceptChanges();
//
//
//
}
#endregion
}
}
使用:
MrfuRWXmlFile mrfurw
=
new
MrfuRWXmlFile();
private
void
button_Create_Click(
object
sender, System.EventArgs e)
{
MrfuRWXmlFile.CreateXmlFile();
this
.button_read.PerformClick();
}
private
void
button_read_Click(
object
sender, System.EventArgs e)
{
this
.dataGrid1.DataSource
=
mrfurw.GetSettingsValue();
}
private
void
button_Update_Click(
object
sender, System.EventArgs e)
{
if
(
this
.textBox_Value.Text.Trim()
==
""
)
return
;
mrfurw.UpdateRecorder(
"
SqlStr0
"
,
this
.textBox_Value.Text.Trim());
this
.button_read.PerformClick();
}
int
i
=
0
;
private
void
button_Add_Click(
object
sender, System.EventArgs e)
{
i
+=
1
;
mrfurw.AddNewRecorder( System.DateTime.Now.ToString(),i.ToString());
this
.button_read.PerformClick();
}
private
void
button1_Click(
object
sender, System.EventArgs e)
{
MessageBox.Show (mrfurw.ReadSettingsValue(
"
SqlStr0
"
));
}
private
void
button2_Click(
object
sender, System.EventArgs e)
{
DataTable myTable
=
(DataTable)dataGrid1.DataSource;
mrfurw.SaveDataGridChange(myTable);
}
查看全文
相关阅读:
P1396 营救
[BUUCTF]REVERSE——xor
[BUUCTF]REVERSE——helloword
[BUUCTF]REVERSE——[BJDCTF 2nd]guessgame
[BUUCTF]REVERSE——新年快乐
[BUUCTF]PWN——jarvisoj_level3
[BUUCTF]PWN——[BJDCTF 2nd]test
[BUUCTF]PWN——ciscn_2019_es_2
[BUUCTF]PWN——[Black Watch 入群题]PWN
[BUUCTF]PWN——others_shellcode
原文地址:https://www.cnblogs.com/furenjun/p/441576.html
最新文章
AFN清除图片缓存 以及菊花转圈
各种注释
linux学习笔记
Fibonacci in the Pocket
Singing Everywhere
Sequence in the Pocket
有趣的求和
Divisibility
Rinne Loves Study
Tetrahedron
热门文章
第二章 数据通信基础 (三)
改Jupyter Notebook的默认工作路径?
pip更新升级和删除包
pip安装更换国内源
windows环境下永久修改pip镜像源的方法
Anaconda配置国内镜像源
论文解读(BYOL)《Bootstrap Your Own Latent A New Approach to Self-Supervised Learning》
什么是 baseline 和 benchmark
消融实验
线索二叉树
Copyright © 2011-2022 走看看