创建一个xml文件的步骤:
新建一个XElement对象,为这个对象赋值。我这里的最外层节点名称叫:Smart2000,它里面包含两个节点,“SuperPin”和“Modules”,在这里,“SuperPin”节点的值是固定的,在声明xml文件时就直接初始化,儿“Modules”节点的值没有固定,在这里就直接写入,声明存在这个节点,并不指定“Modules”节点里的格式。
不指定Modules的格式:
public static XElement GenerateXmlFile(string appId)
XElement myXDoc = new XElement(
new XElement("Smart2000",
new XElement("SuperPin", superPin),
new XElement("Modules")
);
new XElement("Smart2000",
new XElement("SuperPin", superPin),
new XElement("Modules")
);
}
指定Modules的格式:
public static XElement GenerateXmlFile(string appId)
XElement myXDoc = new XElement(
new XElement("Smart2000",
new XElement("SuperPin", superPin),
new XElement("Modules",
new XElement("Modules",
new XAttribute("ID", "0"),
new XAttribute("enable", "true"),
new XAttribute("name", "Module" + 0),
new XAttribute("Data", "")
)
new XElement("Smart2000",
new XElement("SuperPin", superPin),
new XElement("Modules",
new XElement("Modules",
new XAttribute("ID", "0"),
new XAttribute("enable", "true"),
new XAttribute("name", "Module" + 0),
new XAttribute("Data", "")
)
)
);
);
}
当我想在别的地方调用这个方法,并且还要为这个xml文件下的“Modules”节点新添加节点的时候,如果初始化的时候没有指定格式,那这里就可以直接写添加节点的方法,如果初始化了,那么可以判断一下初始化节点,然后RemoveAll()删除掉该节点,然后添加符合条件的数据
/// <summary>
/// 修改节点的值
/// </summary>
/// <param name="myXDoc">原xml文件</param>
/// <param name="num">模块序号</param>
/// <param name="name">模块名称</param>
/// <param name="data">模块数据[此处暂不做要求]</param>
/// <returns>添加新节点后的xml文件</returns>
public static XElement GenerateModuleUpdateAdd(XElement myXDoc, int num, string name, string data)
{
XElement xele = myXDoc.Element("Modules"); //在xml文件里取出该节点
XElement x = xele.Element("Modules"); //在该节点下取到第一行初始化的数据
//删除第一行数据 ps:由于水平有限,没有找到怎么替换第一行数据的方法,就干脆删掉,重新添加第一行符合条件的数据
if (Convert.ToString(x.Attribute("name").Value) == "Module0")
{
xele.RemoveAll();//删除该节点的全部内容
}
/// 修改节点的值
/// </summary>
/// <param name="myXDoc">原xml文件</param>
/// <param name="num">模块序号</param>
/// <param name="name">模块名称</param>
/// <param name="data">模块数据[此处暂不做要求]</param>
/// <returns>添加新节点后的xml文件</returns>
public static XElement GenerateModuleUpdateAdd(XElement myXDoc, int num, string name, string data)
{
XElement xele = myXDoc.Element("Modules"); //在xml文件里取出该节点
XElement x = xele.Element("Modules"); //在该节点下取到第一行初始化的数据
//删除第一行数据 ps:由于水平有限,没有找到怎么替换第一行数据的方法,就干脆删掉,重新添加第一行符合条件的数据
if (Convert.ToString(x.Attribute("name").Value) == "Module0")
{
xele.RemoveAll();//删除该节点的全部内容
}
//添加符合条件的数据
xele.Add(new XElement("Module",
new XAttribute("id", num),
new XAttribute("enable", "true"),
new XAttribute("name", name),
new XAttribute("Data", data)));
return myXDoc;
}
xele.Add(new XElement("Module",
new XAttribute("id", num),
new XAttribute("enable", "true"),
new XAttribute("name", name),
new XAttribute("Data", data)));
return myXDoc;
}
如果有多条数据要添加到这个节点下面,我认为把要添加的数据存入数组,然后循环数组调用该方法即可。
这些是我这两天操作一个xml文件所理解的东西。学习学习再学习!:)