//private const string OView = "o:View"; /// <summary> /// 读取指定Pdm文件的实体集合 /// </summary> /// <param name="pdmFile">Pdm文件名(全路径名)</param> /// <returns>实体集合</returns> public PdmModel ReadFromFile(string pdmFile) { //加载文件. var xmlDoc = new XmlDocument(); xmlDoc.Load(pdmFile); //必须增加xml命名空间管理,否则读取会报错. var xmlnsManager = new XmlNamespaceManager(xmlDoc.NameTable); xmlnsManager.AddNamespace("a", "attribute"); xmlnsManager.AddNamespace("c", "collection"); xmlnsManager.AddNamespace("o", "object"); PdmModel theModel = new PdmModel(); //读取所有表节点 XmlNodeList xnTablesList = xmlDoc.SelectNodes("//" + CTables, xmlnsManager); if (xnTablesList != null) foreach (XmlNode xmlTables in xnTablesList) { foreach (XmlNode xnTable in xmlTables.ChildNodes) { //排除快捷对象. if (xnTable.Name != "o:Shortcut") { theModel.Tables.Add(GetTable(xnTable)); } } } //读取所有视图节点. XmlNodeList xnViewsList = xmlDoc.SelectNodes("//" + CViews, xmlnsManager); if (xnViewsList != null) foreach (XmlNode xmlViews in xnViewsList) { foreach (XmlNode xnView in xmlViews.ChildNodes) { theModel.Views.Add(GetView(xnView)); } } return theModel; }
/// <summary> /// 读取指定Pdm文件的实体集合 /// </summary> /// <param name="pdmFile">Pdm文件名(全路径名)</param> /// <returns>实体集合</returns> public PdmModel ReadFromFile(string pdmFile) { //加载文件. 使用只读形式打开PDM文件,这样就不会因为已经使用PowerDesigner打开PDM文件而导致抛异常了 FileStream fs = new FileStream(pdmFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); var xmlDoc = new XmlDocument(); xmlDoc.Load(fs); //必须增加xml命名空间管理,否则读取会报错. var xmlnsManager = new XmlNamespaceManager(xmlDoc.NameTable); xmlnsManager.AddNamespace("a", "attribute"); xmlnsManager.AddNamespace("c", "collection"); xmlnsManager.AddNamespace("o", "object"); PdmModel theModel = new PdmModel(); //读取所有表节点 XmlNodeList xnTablesList = xmlDoc.SelectNodes("//" + CTables, xmlnsManager); if (xnTablesList != null) { foreach (XmlNode xmlTables in xnTablesList) { foreach (XmlNode xnTable in xmlTables.ChildNodes) { //排除快捷对象. if (xnTable.Name != "o:Shortcut") { theModel.Tables.Add(GetTable(xnTable)); } } } } //读取所有视图节点. XmlNodeList xnViewsList = xmlDoc.SelectNodes("//" + CViews, xmlnsManager); if (xnViewsList != null) { foreach (XmlNode xmlViews in xnViewsList) { foreach (XmlNode xnView in xmlViews.ChildNodes) { theModel.Views.Add(GetView(xnView)); } } } // 读取所有存储过程节点 XmlNodeList xnProcedureList = xmlDoc.SelectNodes("//" + CProcedures, xmlnsManager); if (xnProcedureList != null) { foreach (XmlNode xnProcedures in xnProcedureList) { foreach (XmlNode xnProcedure in xnProcedures.ChildNodes) { theModel.Procedures.Add(GetProcedure(xnProcedure)); } } } return(theModel); }