//=======================================================
//XML文件的,数据读、写
//=======================================================
/// <summary>
/// 读取XML
/// </summary>
public void ReadXML(string file)
{ //using System.Xml;
//载入XML文档
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(file);
XmlNode root = xmlDoc.SelectSingleNode("Map");//查找<bookstore>
XmlElement Node = (XmlElement)root;
string str = Node.GetAttribute("CellHeight"); //CellWidth
MessageBox.Show("宽度值:" + str + "", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
//root.SelectSingleNode()
XmlNode Node2 = root.SelectSingleNode("PhysicalLayer"); //查找子节点
XmlElement Elem = (XmlElement)Node2;
MessageBox.Show("获取数据:" + Elem.InnerText, "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
/// <summary>
/// 写入XML
/// </summary>
public void writeXML(string file)
{
//载入XML文档
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(file);
//修改XML
XmlNode root = xmlDoc.SelectSingleNode("bookstore");//查找<bookstore>
{
XmlElement xe1 = xmlDoc.CreateElement("book"); //创建一个<book>节点
xe1.SetAttribute("genre", "李赞红"); //设置该节点genre属性
xe1.SetAttribute("ISBN", "2-3631-4"); //设置该节点ISBN属性
{
XmlElement xesub1 = xmlDoc.CreateElement("title");
xesub1.InnerText = "CS从入门到精通"; //设置文本节点
xe1.AppendChild(xesub1); //添加到<book>节点中
XmlElement xesub2 = xmlDoc.CreateElement("author");
xesub2.InnerText = "候捷";
xe1.AppendChild(xesub2);
XmlElement xesub3 = xmlDoc.CreateElement("price");
xesub3.InnerText = "58.3";
xe1.AppendChild(xesub3);
}
root.AppendChild(xe1); //添加到<bookstore>节点中
}
//保存修改到XML
xmlDoc.Save(file);
MessageBox.Show("写入XML完成", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
/// <summary>
/// 获取XML文件,节点属性值,用法:
/// ReadXML_Attrribute("D:\\data.XML", "Map", "CellHeight"); 根节点
/// ReadXML_Attrribute("D:\\data.XML", "Map/BuildItem", "name"); 子节点
/// </summary>
public string ReadXML_NodeAttrribute(string file, string nodePath, string attr)
{ //using System.Xml;
string str = "";
try
{
//载入XML文档
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(file);
XmlNode Node = xmlDoc.SelectSingleNode(nodePath); //查找节点
XmlNode Node2 = xmlDoc.SelectNodes(nodePath)[2];
Node = Node2;
XmlElement Elemnet = (XmlElement)Node; //转化为XML元素
str = Elemnet.GetAttribute(attr); //获取节点属性值
}
catch (Exception e)
{
string tmp = "获取XML文件,节点属性值出错! \n1、请确保文件\n“" + file + "”存在,且其格式无误\n2、请确保节点“" + nodePath + "”和节点属性“" + attr + "”在XML文件中确实存在";
MessageBox.Show(tmp, "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
return str;
}
/// <summary>
/// 读取所有节点nodePath,的所有attr属性值
/// </summary>
public string[][] ReadXML_NodesAttrribute(string file, string nodePath, string[] attr)
{ //using System.Xml;
string[][] str = null;
try
{
//载入XML文档
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(file);
XmlNodeList Nodes = xmlDoc.SelectNodes(nodePath); //获取所有nodePath的节点
str = new string[Nodes.Count][];
for (int i = 0; i < Nodes.Count; i++)
{
XmlElement Elemnet = (XmlElement)Nodes[i]; //转化为XML元素
str[i] = new string[attr.Length];
for (int j = 0; j < attr.Length; j++)
str[i][j] = Elemnet.GetAttribute(attr[j]); //获取节点属性值
}
}
catch (Exception e)
{
string tmp = "获取XML文件,节点属性值出错! \n1、请确保文件\n“" + file + "”存在,且其格式无误\n2、请确保节点“" + nodePath + "”和节点属性“" + attr + "”在XML文件中确实存在";
MessageBox.Show(tmp, "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
return str;
}
/// <summary>
/// 读取所有节点nodePath,的所有attr属性值
/// </summary>
public string[][] ReadXML_NodesAttrribute2(string fileText, string nodePath, string[] attr)
{ //using System.Xml;
string[][] str = null;
try
{
//载入XML文档
XmlDocument xmlDoc = new XmlDocument();
//xmlDoc.Load(file);
xmlDoc.LoadXml(fileText);
XmlNodeList Nodes = xmlDoc.SelectNodes(nodePath); //获取所有nodePath的节点
str = new string[Nodes.Count][];
for (int i = 0; i < Nodes.Count; i++)
{
XmlElement Elemnet = (XmlElement)Nodes[i]; //转化为XML元素
str[i] = new string[attr.Length];
for (int j = 0; j < attr.Length; j++)
str[i][j] = Elemnet.GetAttribute(attr[j]); //获取节点属性值
}
}
catch (Exception e)
{
string tmp = "获取XML文件,节点属性值出错! \n1、请确保XML文件\n" + "存在,且其格式无误\n2、请确保节点“" + nodePath + "”和节点属性“" + attr + "”在XML文件中确实存在";
MessageBox.Show(tmp, "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
return str;
}
/// <summary>
///获取XML文件,节点数据,用法
///ReadXML_NodeText("D:\\data.XML", "Map"); 根节点
///ReadXML_NodeText("D:\\data.XML", "Map/PhysicalLayer"); 子节点
/// </summary>
public string ReadXML_NodeText(string file, string nodePath)
{
string str = "";
try
{
//载入XML文档
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(file);
XmlNode Node = xmlDoc.SelectSingleNode(nodePath); //查找节点
XmlElement Elemnet = (XmlElement)Node; //转化为XML元素
str = Elemnet.InnerText; //获取节点数据
}
catch (Exception e)
{
string tmp = "获取XML文件,节点数据出错! \n1、请确保文件\n“" + file + "”存在,且其格式无误\n2、请确保节点“" + nodePath + "”在XML文件中确实存在";
MessageBox.Show(tmp, "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
return str;
}
C#XML文件的数据读、写
最新推荐文章于 2025-07-09 09:23:06 发布