/// <summary>
/// 创建xml文件
/// </summary>
/// <param name="fileName">创建的文件名称</param>
/// <param name="nodeName">节点名称集合</param>
/// <param name="valueList">属性值对集合</param>
public static void CreateXmlFile(string fileName,List<string>nodeName,Hashtable ht) {
XmlDocument document = new XmlDocument();
//创建类型声明节点
XmlNode node = document.CreateXmlDeclaration("1.0", "utf-8", "");
document.AppendChild(node);
//创建根节点
XmlNode root = document.CreateElement(nodeName[0]);
XmlNode parentNode = root;
document.AppendChild(root);
if (nodeName.Count > 0) {
for (int m = 1; m < nodeName.Count-1; m++)
{
XmlNode xNode = document.CreateNode(XmlNodeType.Element, nodeName[m], null);
parentNode.AppendChild(xNode);
parentNode = xNode;
}
}
//设置属性值
foreach (DictionaryEntry de in ht)
{
XmlNode xNode = document.CreateNode(XmlNodeType.Element, nodeName[nodeName.Count-1], null);
parentNode.AppendChild(xNode);
XmlNode attr = document.CreateNode(XmlNodeType.Attribute, "name", null);
attr.Value = de.Key.ToString();
xNode.Attributes.SetNamedItem(attr);
XmlNode attr_value = document.CreateNode(XmlNodeType.Attribute, "value", null);
attr_value.Value = de.Value.ToString();
xNode.Attributes.SetNamedItem(attr_value);
//xNode.Attributes.
}
document.Save(Application.StartupPath + "\\" + fileName);
}
调用方式:
List<string> list = new List<string>();
list.Add("config");
list.Add("deviconfig");
list.Add("property");
Hashtable ht = new Hashtable();
ht.Add("device", "SP-3000");
ht.Add("portName", "COM1");
ht.Add("baudRate", "19200");
ht.Add("dataBits", "8");
ht.Add("stopBits", "0");
ht.Add("parity", "0");
ht.Add("handshake", 1);
XmlFileUtils.CreateXmlFile("config\\ImageDevices\\Series.xml", list, ht);
最后生成xml文件结构如下:
<?xml version="1.0" encoding="utf-8"?>
<config>
<deviconfig>
<property name="sourceindex" value="3" />
<property name="brightness" value="134" />
<property name="contrast" value="132" />
<property name="imageType" value="JPG" />
<property name="imageFun" value="页面" />
<property name="imgWidth" value="900" />
<property name="imgHigth" value="450" />
<property name="toplength" value="5" />
<property name="leftlength" value="5" />
<property name="shortcutkey" value="5" />
</deviconfig>
</config>
注意:上面工具类只用于生成这种数据结构类型的xml文件,对于<node>value<node>结构类型的xml文件无效(网上搜索到的基本都是创建这种类型xml文件的方法)。