// string xmldata = AppDomain.CurrentDomain.BaseDirectory.ToString() + @"xml涂聚文.xml"; XElement xe = XElement.Load(xmldata); IEnumerable<XElement> element = from ele in xe.Elements("dataserver") // where ele.Attribute("id").Value == "1" select ele; if (element.Count() > 0) { List<ServerConfig> infos=showInfoByElements(element); } XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(xmldata); XmlElement xed = xmlDoc.DocumentElement; // DocumentElement 获取xml文档对象的根XmlElement. string strPath = string.Format("/ServerConfig/dataserver[@id="{0}"]", "1"); XmlElement selectXe = (XmlElement)xed.SelectSingleNode(strPath); //selectSingleNode 根据XPath表达式,获得符合条件的第一个节点. XmlNodeList elementdd = selectXe.ChildNodes; XmlNodeList senode = xed.SelectSingleNode(strPath).ChildNodes; foreach (XmlNode childNode in senode) { XmlElement childElement = (XmlElement)childNode; string ddd = childElement.InnerText;// childElement.GetAttribute("database"); string ddt = childNode.InnerText; } foreach (XmlNode ee in selectXe.ChildNodes) { string dd = ee.InnerText; } MessageBox.Show("連接塗聚文成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
/// <summary> /// /// </summary> /// <param name="elements"></param> private List<ServerConfig> showInfoByElements(IEnumerable<XElement> elements) { List<ServerConfig> modelList = new List<ServerConfig>(); List<Databases> dslist=null; foreach (var ele in elements) { dslist = new List<Databases>(); ServerConfig model = new ServerConfig(); model.id = ele.Attribute("id").Value;// ele.Element("id").Value; model.server = ele.Attribute("server").Value; //ele.Element("server").Value; model.setdatabase = ele.Attribute("setdatabase").Value;// ele.Element("setdatabase").Value; model.user = ele.Attribute("user").Value; model.password = ele.Attribute("password").Value; model.database = ele.Element("database").Value; string xmldata = AppDomain.CurrentDomain.BaseDirectory.ToString() + @"xmlgeovindu.xml"; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(xmldata); XmlElement xed = xmlDoc.DocumentElement; // DocumentElement 获取xml文档对象的根XmlElement. string strPath = string.Format("/ServerConfig/dataserver[@id="{0}"]", model.id); XmlElement selectXe = (XmlElement)xed.SelectSingleNode(strPath); //selectSingleNode 根据XPath表达式,获得符合条件的第一个节点. XmlNodeList elementdd = selectXe.ChildNodes; XmlNodeList senode = xed.SelectSingleNode(strPath).ChildNodes; foreach (XmlNode childNode in senode) { XmlElement childElement = (XmlElement)childNode; string ddd = childElement.InnerText;// childElement.GetAttribute("database"); string ddt = childNode.InnerText; Databases inf = new Databases(); inf.database = childElement.InnerText; dslist.Add(inf); } foreach (XmlNode ee in selectXe.ChildNodes) { string dd = ee.InnerText; } model.ListData = dslist; modelList.Add(model); } return modelList; }
/// <summary> /// /// </summary> public class ServerConfig { /// <summary> /// /// </summary> public string id { get; set; } /// <summary> /// /// </summary> public string server { get; set; } /// <summary> /// /// </summary> public string setdatabase { get; set; } /// <summary> /// /// </summary> public string user { get; set; } /// <summary> /// /// </summary> public string password { get; set; } /// <summary> /// /// </summary> public string database { get; set; } /// <summary> ///一个服务器下,多个数据 数据库名称列表 /// </summary> public List<Databases> ListData { get; set; } } /// <summary> /// 数据库名称类 /// </summary> public class Databases { /// <summary> /// 数据库名称 /// </summary> public string database { get; set; } }
XML:
<?xml version="1.0" encoding="utf-8"?> <ServerConfig> <dataserver server="GEOVINDU" setdatabase="GeovinDu" user="geovindu" password="涂聚文" id="1"> <database>塗聚文 Geovin Du</database> </dataserver> </ServerConfig>
bool isok=ConnectionTestInfo.ConnectionTest(combServer.Text, combDatabase.Text, this.txtbUser.Text.Trim(), this.txtbPassword.Text.Trim()); if (isok) { string newdata = string.Empty; string newserver = string.Empty; //考虑没有进行添加 xmldatafile = AppDomain.CurrentDomain.BaseDirectory.ToString() + @"xml涂聚文 Geovin Du.xml"; xmlserverfile = AppDomain.CurrentDomain.BaseDirectory.ToString() + @"xml塗聚文Geovin Du.xml"; XElement xedata = XElement.Load(xmldatafile); //IEnumerable<XElement> xdedata = xedata; IEnumerable<XElement> element = from ele in xedata.Elements("dataserver") where ele.Attribute("id").Value == "1" select ele; bool exists = false; List<string> lis = new List<string>(); if (element.Count() > 0) { foreach (var ele in element) { if (!object.Equals(ele.Element("database"), null)) { //lis.Add(ele.Element("database").Value); //只查了第一条 XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(xmldatafile); XmlElement xed = xmlDoc.DocumentElement; // DocumentElement 获取xml文档对象的根XmlElement. string strPath = string.Format("/ServerConfig/dataserver[@id="{0}"]", ele.Attribute("id").Value); //eles.Element("server").Value XmlElement selectXe = (XmlElement)xed.SelectSingleNode(strPath); //selectSingleNode 根据XPath表达式,获得符合条件的第一个节点. XmlNodeList elementdd = selectXe.ChildNodes; XmlNodeList senode = xed.SelectSingleNode(strPath).ChildNodes; foreach (XmlNode childNode in senode) { XmlElement childElement = (XmlElement)childNode; string ddd = childElement.InnerText;// childElement.GetAttribute("database"); string ddt = childNode.InnerText; lis.Add(childElement.InnerText); } foreach (XmlNode ee in selectXe.ChildNodes) { string dd = ee.InnerText; } } } exists = lis.Contains(combDatabase.Text.Trim()); if (lis.Count > 0) { newdata = combDatabase.Text.Trim(); if (!exists) { XmlDocument doc = new XmlDocument(); doc.Load(xmldatafile); XmlNode root = doc.SelectSingleNode("ServerConfig"); XmlElement xelAuthor = doc.CreateElement("database"); xelAuthor.InnerText = newdata; string strPath = string.Format("/ServerConfig/dataserver[@id="{0}"]", "1"); XmlElement xelKey = (XmlElement)doc.SelectSingleNode(strPath); //doc.SelectSingleNode(""); xelKey.AppendChild(xelAuthor); doc.Save(xmldatafile); } } else { XmlDocument doc = new XmlDocument(); doc.Load(xmldatafile); XmlNode root = doc.SelectSingleNode("ServerConfig"); XmlElement xelAuthor = doc.CreateElement("database"); xelAuthor.InnerText = combDatabase.Text.Trim(); string strPath = string.Format("/ServerConfig/dataserver[@id="{0}"]", "1"); XmlElement xelKey = (XmlElement)doc.SelectSingleNode(strPath); //doc.SelectSingleNode(""); xelKey.AppendChild(xelAuthor); doc.Save(xmldatafile); } } else { newdata = combDatabase.Text.Trim(); XmlDocument doc = new XmlDocument(); doc.Load(xmldatafile); XmlNode root = doc.SelectSingleNode("ServerConfig"); XmlElement xelAuthor = doc.CreateElement("database"); xelAuthor.InnerText = newdata; string strPath = string.Format("/ServerConfig/dataserver[@id="{0}"]", "1"); XmlElement xelKey = (XmlElement)doc.SelectSingleNode(strPath); //doc.SelectSingleNode(""); xelKey.AppendChild(xelAuthor); doc.Save(xmldatafile); } lis = new List<string>(); //操作 XElement xeserver = XElement.Load(xmlserverfile); IEnumerable<XElement> eleserver = from eles in xeserver.Elements("dataserver") where eles.Attribute("id").Value == "1" select eles; if (eleserver.Count() > 0) { foreach (var eles in eleserver) { if (!object.Equals(eles.Element("server"), null)) { // lis.Add(eles.Element("server").Value); //只查了第1条 XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(xmlserverfile); XmlElement xed = xmlDoc.DocumentElement; // DocumentElement 获取xml文档对象的根XmlElement. string strPath = string.Format("/ServerConfig/dataserver[@id="{0}"]", eles.Attribute("id").Value); //eles.Element("server").Value XmlElement selectXe = (XmlElement)xed.SelectSingleNode(strPath); //selectSingleNode 根据XPath表达式,获得符合条件的第一个节点. XmlNodeList elementdd = selectXe.ChildNodes; XmlNodeList senode = xed.SelectSingleNode(strPath).ChildNodes; foreach (XmlNode childNode in senode) { XmlElement childElement = (XmlElement)childNode; string ddd = childElement.InnerText;// childElement.GetAttribute("database"); string ddt = childNode.InnerText; lis.Add(childElement.InnerText); } foreach (XmlNode ee in selectXe.ChildNodes) { string dd = ee.InnerText; } } } exists = false; if (lis.Count > 0) { exists = lis.Contains(combServer.Text.Trim()); newserver = combServer.Text.Trim(); if (!exists) { XmlDocument doc = new XmlDocument(); doc.Load(xmlserverfile); XmlNode root = doc.SelectSingleNode("ServerConfig"); XmlElement xelAuthor = doc.CreateElement("server"); xelAuthor.InnerText = newserver; string strPath = string.Format("/ServerConfig/dataserver[@id="{0}"]", "1"); XmlElement xelKey = (XmlElement)doc.SelectSingleNode(strPath); //doc.SelectSingleNode(""); xelKey.AppendChild(xelAuthor); doc.Save(xmlserverfile); } } else { XmlDocument doc = new XmlDocument(); doc.Load(xmlserverfile); XmlNode root = doc.SelectSingleNode("ServerConfig"); XmlElement xelAuthor = doc.CreateElement("server"); xelAuthor.InnerText = combServer.Text.Trim(); string strPath = string.Format("/ServerConfig/dataserver[@id="{0}"]", "1"); XmlElement xelKey = (XmlElement)doc.SelectSingleNode(strPath); //doc.SelectSingleNode(""); xelKey.AppendChild(xelAuthor); doc.Save(xmlserverfile); } } else { newserver = combServer.Text.Trim(); XmlDocument doc = new XmlDocument(); doc.Load(xmlserverfile); XmlNode root = doc.SelectSingleNode("ServerConfig"); XmlElement xelAuthor = doc.CreateElement("server"); xelAuthor.InnerText = newserver; string strPath = string.Format("/ServerConfig/dataserver[@id="{0}"]", "1"); XmlElement xelKey = (XmlElement)doc.SelectSingleNode(strPath); //doc.SelectSingleNode(""); xelKey.AppendChild(xelAuthor); doc.Save(xmlserverfile); } MessageBox.Show("連i涂聚文成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox.Show("没有找到涂聚文,重来一次", "提示", MessageBoxButtons.OK, MessageBoxIcon.Question); return; } //指定修改值 SchemasNameListInfo info=model.schemaname(this.txtbUser.Text.Trim(), this.txtConnection.Text.Trim()); SchemasNameInfo.SchemasName = info.SchemaName; bool ok= model.CreateFun(combDatabase.Text.ToString().Trim(),serverstr); if (ok) { xmlfile = AppDomain.CurrentDomain.BaseDirectory.ToString() + @"xml涂聚文.xml"; //edit xml XElement xe = XElement.Load(xmlfile); if (info.DatabaseName != null) { //dgvBookInfo.CurrentRow.Cells[1]对应着ISBN号 string id = "1"; IEnumerable<XElement> element = from ele in xe.Elements("dataserver") where ele.Attribute("id").Value == id select ele; if (element.Count() > 0) { XElement first = element.First(); ///设置新的属性 first.SetAttributeValue("server", combServer.Text.ToString().Trim()); first.SetAttributeValue("database", combDatabase.Text.ToString().Trim()); first.SetAttributeValue("user", txtbUser.Text.ToString().Trim()); first.SetAttributeValue("password", txtbPassword.Text.ToString().Trim()); ///替换新的节点 first.ReplaceNodes( new XElement("server", combServer.Text.ToString().Trim()), new XElement("database", combDatabase.Text.ToString().Trim()), new XElement("user", txtbUser.Text.Trim()), new XElement("password", txtbPassword.Text.Trim()) ); } xe.Save(xmlfile); } MessageBox.Show("配置涂聚文成功!"); } else { MessageBox.Show("配置涂聚文不成功!"); }