下面方法为面向过程的方式,在C#中应该优先使用序列化的方式操作XML文件
1. 当前方式为加载对应的XML文件,清空指定节点下的XmlElement,然后再重新创建XmlElement,并设置属性。
目标文件
<?xml version="1.0"?>
<Root WorkLayer="1">
<PartCategory Name="Category1" LocalName="类别1" Layer="2~5" Ico="" Remarks="" Sensibility="0" />
<PartCategory Name="Category2" LocalName="类别2" Layer="15" Ico="" Remarks="" Sensibility="0" />
<PartCategory Name="Category3" LocalName="类别3" Layer="20" Ico="" Remarks="" Sensibility="0" />
<PartCategory Name="Category4" LocalName="类别4" Layer="30~50" Ico="" Remarks="" Sensibility="0" />
</Root>
写入XML文件代码
private List<Node> SelectAllNodes()
{
List<Node> nodes=new List<Node>();
var node = tree_control0.RootNode;
while (node!=null)
{
nodes.Add(node);
node = node.NextNode;
}
return nodes;
}
public void WriteXMLFile(List<Node> nodes)
{
XmlDocument xmldoc = new XmlDocument();
string path = AskTemplateDir();
xmldoc.Load(path);
if (xmldoc.DocumentElement != null) xmldoc.DocumentElement.InnerText = null;
XmlNode root = xmldoc.SelectSingleNode("Root");
root.InnerText = null;
foreach (var node in nodes)
{
string name01 = node.GetColumnDisplayText(name);
string localName01 = node.GetColumnDisplayText(localName);
string layer01 = node.GetColumnDisplayText(layer);
XmlElement holeElement = xmldoc.CreateElement("PartCategory");
holeElement.SetAttribute("Name", name01);
holeElement.SetAttribute("LocalName", localName01);
holeElement.SetAttribute("Layer", layer01);
holeElement.SetAttribute("Ico", "");
holeElement.SetAttribute("Remarks", "");
holeElement.SetAttribute("Sensibility", "0");
root.AppendChild(holeElement);
}
xmldoc.Save(path);
}