protected S_OD_KONACNI_POREZ_PO_OPCINAMADataSet(SerializationInfo info, StreamingContext context) : base(info, context, false) { this._schemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema; if (this.IsBinarySerialized(info, context)) { this.InitVars(false); CollectionChangeEventHandler handler2 = new CollectionChangeEventHandler(this.SchemaChanged); this.Tables.CollectionChanged += handler2; this.Relations.CollectionChanged += handler2; } else { string s = Conversions.ToString(info.GetValue("XmlSchema", typeof(string))); if (this.DetermineSchemaSerializationMode(info, context) == System.Data.SchemaSerializationMode.IncludeSchema) { DataSet dataSet = new DataSet(); dataSet.ReadXmlSchema(new XmlTextReader(new StringReader(s))); if (dataSet.Tables["S_OD_KONACNI_POREZ_PO_OPCINAMA"] != null) { this.Tables.Add(new S_OD_KONACNI_POREZ_PO_OPCINAMADataTable(dataSet.Tables["S_OD_KONACNI_POREZ_PO_OPCINAMA"])); } this.DataSetName = dataSet.DataSetName; this.Prefix = dataSet.Prefix; this.Namespace = dataSet.Namespace; this.Locale = dataSet.Locale; this.CaseSensitive = dataSet.CaseSensitive; this.EnforceConstraints = dataSet.EnforceConstraints; this.Merge(dataSet, false, MissingSchemaAction.Add); this.InitVars(); } else { this.ReadXmlSchema(new XmlTextReader(new StringReader(s))); } this.GetSerializationData(info, context); CollectionChangeEventHandler handler = new CollectionChangeEventHandler(this.SchemaChanged); base.Tables.CollectionChanged += handler; this.Relations.CollectionChanged += handler; } }
protected DSInforme(SerializationInfo info, StreamingContext context) : base(info, context, false) { if ((this.IsBinarySerialized(info, context) == true)) { this.InitVars(false); CollectionChangeEventHandler schemaChangedHandler1 = new CollectionChangeEventHandler(this.SchemaChanged); this.Tables.CollectionChanged += schemaChangedHandler1; this.Relations.CollectionChanged += schemaChangedHandler1; return; } string strSchema = ((string)(info.GetValue("XmlSchema", typeof(string)))); if ((this.DetermineSchemaSerializationMode(info, context) == SchemaSerializationMode.IncludeSchema)) { DataSet ds = new DataSet(); ds.ReadXmlSchema(new XmlTextReader(new StringReader(strSchema))); if ((ds.Tables["DSInforme"] != null)) { base.Tables.Add(new DSInformeDataTable(ds.Tables["DSInforme"])); } this.DataSetName = ds.DataSetName; this.Prefix = ds.Prefix; this.Namespace = ds.Namespace; this.Locale = ds.Locale; this.CaseSensitive = ds.CaseSensitive; this.EnforceConstraints = ds.EnforceConstraints; this.Merge(ds, false, MissingSchemaAction.Add); this.InitVars(); } else { this.ReadXmlSchema(new XmlTextReader(new StringReader(strSchema))); } this.GetSerializationData(info, context); CollectionChangeEventHandler schemaChangedHandler = new CollectionChangeEventHandler(this.SchemaChanged); base.Tables.CollectionChanged += schemaChangedHandler; this.Relations.CollectionChanged += schemaChangedHandler; }
public MainWindow() { InitializeComponent(); musicLib = new MusicLib(); mediaPlayer = new MediaPlayer(); try { musicDataSet = new DataSet(); musicDataSet.ReadXmlSchema("music.xsd"); musicDataSet.ReadXml("music.xml"); } catch (Exception e) { DisplayError("Error loading file: " + e.Message); } musicLib.PrintAllTables(); Console.WriteLine("Total songs = " + musicDataSet.Tables["song"].Rows.Count); // Get a list of all song IDs DataTable songs = musicDataSet.Tables["song"]; var ids = musicLib.SongIds; // Put the ids in an ObservableCollection, which has Add & Remove methods for use later. // The UI will update itself automatically if any changes are made to this collection. songIds = new ObservableCollection <string>(ids); // Bind the song IDs to the combo box songIdComboBox.ItemsSource = songIds; // Select the first item if (songIdComboBox.Items.Count > 0) { songIdComboBox.SelectedItem = songIdComboBox.Items[0]; } }
protected RptData(SerializationInfo info, StreamingContext context) : base(info, context, false) { this._schemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema; if (base.IsBinarySerialized(info, context)) { this.InitVars(false); CollectionChangeEventHandler handler = new CollectionChangeEventHandler(this.SchemaChanged); this.Tables.CollectionChanged += handler; this.Relations.CollectionChanged += handler; } else { string s = (string)info.GetValue("XmlSchema", typeof(string)); if (base.DetermineSchemaSerializationMode(info, context) == System.Data.SchemaSerializationMode.IncludeSchema) { DataSet dataSet = new DataSet(); dataSet.ReadXmlSchema(new XmlTextReader(new StringReader(s))); if (dataSet.Tables["tbTaskDtlList"] != null) { base.Tables.Add(new tbTaskDtlListDataTable(dataSet.Tables["tbTaskDtlList"])); } base.DataSetName = dataSet.DataSetName; base.Prefix = dataSet.Prefix; base.Namespace = dataSet.Namespace; base.Locale = dataSet.Locale; base.CaseSensitive = dataSet.CaseSensitive; base.EnforceConstraints = dataSet.EnforceConstraints; base.Merge(dataSet, false, MissingSchemaAction.Add); this.InitVars(); } else { base.ReadXmlSchema(new XmlTextReader(new StringReader(s))); } base.GetSerializationData(info, context); CollectionChangeEventHandler handler2 = new CollectionChangeEventHandler(this.SchemaChanged); base.Tables.CollectionChanged += handler2; this.Relations.CollectionChanged += handler2; } }
public void DeSerializationToDataSet() { DataSet deSerializeDS = new DataSet(); try { deSerializeDS.ReadXmlSchema(@"C:\Users\Kkoka\Desktop\Refactor_TM\Onix_Harlequin.xml"); deSerializeDS.ReadXml(@"C:\Users\Kkoka\Desktop\Refactor_TM\Onix_Harlequin.xml", XmlReadMode.IgnoreSchema); for (int i = 0; i < deSerializeDS.Tables.Count; i++) { Console.WriteLine(" "); Console.WriteLine("\n Table No: " + i); Console.WriteLine("Column Header: "); for (int j = 0; j < deSerializeDS.Tables[i].Columns.Count; j++) { Console.Write(" " + deSerializeDS.Tables[i].Columns[j].ColumnName.ToString()); } for (int j = 0; j < deSerializeDS.Tables[i].Rows.Count; j++) { Console.WriteLine(""); for (int x = 0; x < deSerializeDS.Tables[i].Columns.Count; x++) { Console.Write(" " + deSerializeDS.Tables[i].Rows[j][x].ToString()); } } } } catch (Exception ex) { //Handle Exception Console.WriteLine("Exception : " + ex.Message.ToString()); } }
/// <summary> /// Xml情報フォルダ読み込み処理 /// </summary> /// <param name="argDS">読み込み情報格納先データセット</param> /// <param name="importFolderPath">読み込み対象フォルダ</param> static public void importXmlFiles(out DataSet argDS, string importFolderPath) { DataSet oneXmlLoader; // Xml 読み込み作業用DataSet DataTable oneXmlTable; // work用DataTable string strSchemaFileName; // Xsdスキーマファイルフルパス string strRecordFileName; // Xmlレコードファイルフルパス string[] fileNameList; // ファイルパスリスト argDS = new DataSet(); // 読込先Datasetを初期化 // xsdファイルにはテーブルにどのような列が存在するのかを格納している // 第2引数で指定されたフォルダに格納されているxsdファイルのリストを取得 fileNameList = System.IO.Directory.GetFiles(importFolderPath, "*.xsd", System.IO.SearchOption.AllDirectories); // フォルダ内のスキーマファイル分ループ for (int iLoop = 0; iLoop < fileNameList.Length; iLoop++) { // xsdファイル名をリストから取得 strSchemaFileName = fileNameList[iLoop]; // xmlファイル名を取得 strRecordFileName = strSchemaFileName.Replace(".xsd", ".xml"); // 作業用Datasetを初期化 oneXmlLoader = new DataSet(); // 作業用DataTabaleを初期化 oneXmlTable = new DataTable(); // スキーマ情報を読み込み oneXmlLoader.ReadXmlSchema(strSchemaFileName); // レコードファイルが存在するかをチェック if (System.IO.File.Exists(strRecordFileName) == true) { // レコードファイルを読み込み oneXmlLoader.ReadXml(strRecordFileName); } // 作業用DataTableに退避 oneXmlTable = oneXmlLoader.Tables[0].Copy(); // 戻り値用DataSetへ格納 argDS.Tables.Add(oneXmlTable); } }
protected guard_profiles_dbDataSet(SerializationInfo info, StreamingContext context) : base(info, context, false) { if (base.IsBinarySerialized(info, context)) { this.InitVars(false); CollectionChangeEventHandler schemaChangedHandler1 = new CollectionChangeEventHandler(this.SchemaChanged); this.Tables.CollectionChanged += schemaChangedHandler1; this.Relations.CollectionChanged += schemaChangedHandler1; return; } string strSchema = (string)info.GetValue("XmlSchema", typeof(string)); if (base.DetermineSchemaSerializationMode(info, context) != System.Data.SchemaSerializationMode.IncludeSchema) { base.ReadXmlSchema(new XmlTextReader(new StringReader(strSchema))); } else { DataSet ds = new DataSet(); ds.ReadXmlSchema(new XmlTextReader(new StringReader(strSchema))); if (ds.Tables["Tbl_sg_profiles"] != null) { base.Tables.Add(new guard_profiles_dbDataSet.Tbl_sg_profilesDataTable(ds.Tables["Tbl_sg_profiles"])); } base.DataSetName = ds.DataSetName; base.Prefix = ds.Prefix; base.Namespace = ds.Namespace; base.Locale = ds.Locale; base.CaseSensitive = ds.CaseSensitive; base.EnforceConstraints = ds.EnforceConstraints; base.Merge(ds, false, MissingSchemaAction.Add); this.InitVars(); } base.GetSerializationData(info, context); CollectionChangeEventHandler schemaChangedHandler = new CollectionChangeEventHandler(this.SchemaChanged); base.Tables.CollectionChanged += schemaChangedHandler; this.Relations.CollectionChanged += schemaChangedHandler; }
//button export click event private void btn_export_Click(object sender, EventArgs e) { using (var ctx = new TicketsEntities()) { DataSet ds = new DataSet(); // get desired ticket String ticketCod = textBox_ticketCode.Text; //reads XML_Schema to build dataset ds.ReadXmlSchema("XML_Schema.xsd"); DataTableCollection dtc = ds.Tables; // var result = ctx.proc_Get_Ticket_Info(ticketCod); //populate dataset int i = 0; foreach (var ticket in result) { if (i == 0) { // ticket info dtc["ticket"].Rows.Add(new Object[] { ticket.tt_id, ticket.cod, ticket.ticketState, ticket.ticketDescription, 1 }); dtc["owner"].Rows.Add(new Object[] { ticket.owner_email, ticket.owner_name, ticket.owner_id, ticket.owner_email, 1 }); dtc["supervisor"].Rows.Add(new Object[] { ticket.anumber, ticket.tech_name, ticket.tech_email, ticket.anumber, 1 }); dtc["type_type"].Rows.Add(new Object[] { ticket.tt_id, ticket.tt_name, ticket.tt_id, 1 }); // ticket actions sequence dtc["actions"].Rows.Add(new object[] { 1 }); ++i; } // continues until there's no more actions dtc["action"].Rows.Add(new object[] { ticket.orderNumber, ticket.beginDate, ticket.endDate, ticket.orderNumber, 1 }); } ds.DataSetName = "Ticket_Info"; //saves both xsd and xml ds.WriteXml(textBox_filename.Text + ".xml"); ds.WriteXmlSchema(textBox_filename.Text + ".xsd"); MessageBox.Show("The ticket " + textBox_ticketCode.Text + " has been exported to " + textBox_filename + ".xml"); // ctx.SaveChanges(); } }
internal static DataSet ReadDataSet() { //注意: // //1.在两个表的属性中设置每个字段的属性 //2.xsd文件中的DataSet的Name属性必须要和xml文件中的根节点名一致 //3.xsd文件中的DataSet的NameSpace属性必须要和xml文件中的根节点中描述一致 //4.修改store.xsd和store.xml的复制到输出目录为始终复制 DataSet ds = new DataSet(); ds.ReadXmlSchema("./store.xsd");//store.xsd是数据集 //测试检查 string xmlSchema = ds.GetXmlSchema(); ds.ReadXml("./store.xml"); //测试检查 string xml = ds.GetXml(); return(ds); }
public static void SaveConfig(SConfig _cfg) { try { DataSet ds = new DataSet(ConfigFilename); ds.ReadXmlSchema(ConfigFilename.Substring(0, ConfigFilename.Length - 3) + "xsd"); ds.ReadXml(ConfigFilename); DataRow dr = ds.Tables[XML.TableKeypad.ToString()].Rows[0]; dr[XML.Filename.ToString()] = _cfg.strKeypadFilename; dr[XML.LastLevel.ToString()] = _cfg.iKeypadLastLevel; dr[XML.LevelUpBySpeed.ToString()] = _cfg.iKeypadLevelSpeedUp; dr[XML.LevelDownBySpeed.ToString()] = _cfg.iKeypadLevelSdeedDown; dr[XML.LevelDownByError.ToString()] = _cfg.iKeypadLevelErrorDown; dr[XML.CharPerMinute.ToString()] = _cfg.iKeypadCharPermin; dr[XML.ErrorPerMinute.ToString()] = _cfg.iKeypadErrPermin; dr[XML.Fontname.ToString()] = _cfg.fontKeypad.Name; dr[XML.Fontsize.ToString()] = _cfg.fontKeypad.Size.ToString(); dr = ds.Tables[XML.TableNumpad.ToString()].Rows[0]; dr[XML.Filename.ToString()] = _cfg.strNumpadFilename; dr[XML.LastLevel.ToString()] = _cfg.iNumpadLastLevel; dr[XML.LevelUpBySpeed.ToString()] = _cfg.iNumpadLevelSpeedUp; dr[XML.LevelDownBySpeed.ToString()] = _cfg.iNumpadLevelSpeedDown; dr[XML.LevelDownByError.ToString()] = _cfg.iNumpadLevelErrorDown; dr[XML.CharPerMinute.ToString()] = _cfg.iNumpadCharPermin; dr[XML.ErrorPerMinute.ToString()] = _cfg.iNumpadErrPermin; dr[XML.Fontname.ToString()] = _cfg.fontNumpad.Name; dr[XML.Fontsize.ToString()] = _cfg.fontNumpad.Size.ToString(); ds.WriteXml(ConfigFilename); } catch (Exception e) { throw e; } }
private void buttonAddTableXML_Click(object sender, EventArgs e) { using (OpenFileDialog ofd = new OpenFileDialog() { Filter = "XML|*.xml|XaML|*.xaml|All|*.*", ValidateNames = true, Multiselect = false }) { if (ofd.ShowDialog() == DialogResult.OK) { try { XmlReader xmlFile = XmlReader.Create(ofd.FileName, new XmlReaderSettings()); DataSet ds = new DataSet(); ds.ReadXmlSchema(xmlFile); xmlFile.Close(); NewTableSQL nTSQL = new NewTableSQL(ds); DBConnection connection = DBConnection.Instance(); connection.DatabaseName = textBoxDatabase.Text; connection.Port = textBoxPort.Text; connection.Server = textBoxDataSource.Text; connection.Password = textBoxPassword.Text; connection.Login = textBoxLogin.Text; //MessageBox.Show(nTSQL.CreateTable()); if (connection.IsConnect()) { using (MySqlCommand command = new MySqlCommand(nTSQL.CreateTable(), connection.Connection)) { command.ExecuteNonQuery(); } connection.Close(); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } } }
/// <summary> /// 数据展示 /// </summary> /// <param name="TradeStockList"></param> /// <param name="CurrentView"></param> /// <param name="CurrentGc"></param> private void LoadData(List <IGrouping <string, View_TradeStock> > TradeStockList, GridView CurrentView, GridControl CurrentGc) { DataSet dataSet = new DataSet(); //从XML文件读出暂存数据库表格框架 包含TradeList表和OrderList表 MemoryStream stream = new MemoryStream(Resources.TradeStockSchema); try { dataSet.ReadXmlSchema(stream); } finally { stream.Close(); } #region 初始化数据 foreach (IGrouping <string, View_TradeStock> tradeCur in TradeStockList) { /* trade表初始化*/ DataRow tradeRow = dataSet.Tables["TradeList"].NewRow(); InitTradeRow(tradeRow, tradeCur); dataSet.Tables["TradeList"].Rows.Add(tradeRow); int productAccount = tradeCur.Where(o => o.OrderType == emumOrderType.SellGoods).Count(); //用于消除赠品的影响 foreach (View_TradeStock orderCurrent in tradeCur) { /* order表初始化 */ DataRow orderRow = dataSet.Tables["OrderList"].NewRow(); InitOrderRow(orderRow, orderCurrent); dataSet.Tables["OrderList"].Rows.Add(orderRow); } // 数据绑定相关连操作 CurrentGc.DataSource = dataSet.Tables["TradeList"]; CurrentGc.ForceInitialize(); //强制初始化 CurrentView.BestFitColumns(); gcWaitPst.LevelTree.Nodes.Add(Alading.Taobao.Constants.TRADE_ORDER_RELATION, gvOrderPst); //建立联级绑定 #endregion } }
static void Main(string[] args) { var simpleShopDB = new DataSet(); simpleShopDB.ReadXmlSchema(@"C:\Users\HP\Desktop\Test\ShopDbSchema.xml"); simpleShopDB.ReadXml(@"C:\Users\HP\Desktop\Test\ShopDBData.xml"); var strongShopDB = new ShopDB(); strongShopDB.Customers.Merge(simpleShopDB.Tables["Customers"]); //merged customers table from simple data set with strongly typed data set shopdb foreach (DataRow row in strongShopDB.Customers.Rows) { foreach (DataColumn column in strongShopDB.Customers.Columns) { Console.WriteLine($"{column.ColumnName}: {row[column]}"); } Console.WriteLine(); } Console.ReadKey(); }
/// <summary> /// Obtain the report information from the received files. /// </summary> /// <returns></returns> private bool ReadReportInfo() { DataSet lDataSet = new DataSet(); try { lDataSet.ReadXmlSchema(mDataSetFile); } catch (Exception e) { Exception excReadingFile = new Exception(CultureManager.TranslateString(LanguageConstantKeys.L_ERROR_LOADING_REPORTSCONFIG, LanguageConstantValues.L_ERROR_LOADING_REPORTSCONFIG), e); ScenarioManager.LaunchErrorScenario(excReadingFile); return(false); } DataTable lStartingClass = lDataSet.Tables[this.ClassName]; if (lStartingClass == null) { object[] lArgs = new object[2]; lArgs[0] = this.ClassName; lArgs[1] = lDataSet.DataSetName; string lErrorMessage = CultureManager.TranslateStringWithParams(LanguageConstantKeys.L_ERROR_DATASET_TABLENOTFOUND, LanguageConstantValues.L_ERROR_DATASET_TABLENOTFOUND, lArgs); ScenarioManager.LaunchErrorScenario(new Exception(lErrorMessage)); return(false); } foreach (DataColumn lCol in lStartingClass.Columns) { if (!string.IsNullOrEmpty(mPopulationContext.DisplaySetAttributes)) { mPopulationContext.DisplaySetAttributes += ","; } mPopulationContext.DisplaySetAttributes += lCol.ColumnName; } return(true); }
protected labtechDataSet(SerializationInfo info, StreamingContext context) : base(info, context, false) { if (!base.IsBinarySerialized(info, context)) { string value = (string)info.GetValue("XmlSchema", typeof(string)); if (base.DetermineSchemaSerializationMode(info, context) != System.Data.SchemaSerializationMode.IncludeSchema) { base.ReadXmlSchema(new XmlTextReader(new StringReader(value))); } else { DataSet dataSet = new DataSet(); dataSet.ReadXmlSchema(new XmlTextReader(new StringReader(value))); if (dataSet.Tables["computers"] != null) { base.Tables.Add(new labtechDataSet.computersDataTable(dataSet.Tables["computers"])); } base.DataSetName = dataSet.DataSetName; base.Prefix = dataSet.Prefix; base.Namespace = dataSet.Namespace; base.Locale = dataSet.Locale; base.CaseSensitive = dataSet.CaseSensitive; base.EnforceConstraints = dataSet.EnforceConstraints; base.Merge(dataSet, false, MissingSchemaAction.Add); this.InitVars(); } base.GetSerializationData(info, context); CollectionChangeEventHandler collectionChangeEventHandler = new CollectionChangeEventHandler(this.SchemaChanged); base.Tables.CollectionChanged += collectionChangeEventHandler; this.Relations.CollectionChanged += collectionChangeEventHandler; } else { this.InitVars(false); CollectionChangeEventHandler collectionChangeEventHandler1 = new CollectionChangeEventHandler(this.SchemaChanged); this.Tables.CollectionChanged += collectionChangeEventHandler1; this.Relations.CollectionChanged += collectionChangeEventHandler1; } }
/// <summary> /// Load xml node into a releational dataset /// </summary> /// <param name="xmlNode">xmlNode to load into the dataset</param> /// <param name="xmlSchema">xmlschema used to parse the xml data</param> /// <param name="dataSetName">The Name of the dataset to create</param> /// <returns>A releational dataset containing the xml document</returns> public DataSet LoadXMLInToDataSet(XmlNode xmlNode, MemoryStream xmlSchema, string dataSetName) { DataSet dsXmlData = new DataSet(dataSetName); try { XmlReader xmlReader = new XmlNodeReader(xmlNode); xmlSchema.Position = 0; dsXmlData.ReadXmlSchema(xmlSchema); dsXmlData.ReadXml(xmlReader); dsXmlData.DataSetName = dataSetName; } catch (Exception ex) { mLogger.Error("LoadXMLInToDataSet", ex); } return(dsXmlData); }
/// <summary>读取执行记录 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void 读取执行记录ToolStripMenuItem_Click(object sender, EventArgs e) { try { FolderBrowserDialog dialog = new FolderBrowserDialog(); dialog.Description = "请选择文件夹"; dialog.SelectedPath = System.Environment.CurrentDirectory + "\\RFCFunConfig\\"; string foldPath = ""; if (dialog.ShowDialog() == DialogResult.OK) { foldPath = dialog.SelectedPath; } else { return; } if (!File.Exists(foldPath + "\\JieGou.XML")) { MessageBox.Show("文件夹中未找到JieGou.XML文件"); return; } if (!File.Exists(foldPath + "\\ShuZhi.XML")) { MessageBox.Show("文件夹中未找到ShuZhi.XML文件"); return; } DataSet ds2 = new DataSet(); ds2.ReadXmlSchema(foldPath + "\\JieGou.XML"); ds2.ReadXml(foldPath + "\\ShuZhi.XML"); dsRFC = new DataSet(); dsRFC = ds2; FillForm(); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
public static DataSet DecryptDataSet(string path) { DataSet ds = new DataSet(); DES des = new DESCryptoServiceProvider(); try { using (StreamReader sr = new StreamReader(Path.Combine(path, "DES.bin"))) { BinaryFormatter bf = new BinaryFormatter(); byte[][] stuff = (byte[][])bf.Deserialize(sr.BaseStream); des.Key = stuff[0]; des.IV = stuff[1]; } ds.ReadXmlSchema(Path.Combine(path, "ESQUEMA.xsd")); using (FileStream fs = new FileStream(Path.Combine(path, "DATA.xml"), FileMode.Open, FileAccess.Read)) { using (CryptoStream cs = new CryptoStream(fs, des.CreateDecryptor(), CryptoStreamMode.Read)) { ds.ReadXml(cs); } } return(ds); } catch { return(null); } finally { des.Dispose(); des = null; ds.Dispose(); ds = null; } }
public static void UpdateShipUser() { try { // Here your xml file string xmlFile = path + "\\" + ConfigurationManager.AppSettings["xmlShipUser"].ToString(); int ShipId = int.Parse(ConfigurationManager.AppSettings["SHIPID"].ToString()); if (File.Exists(xmlFile)) { DataSet dataSet = new DataSet(); dataSet.ReadXmlSchema(xmlFile); dataSet.ReadXml(xmlFile, XmlReadMode.ReadSchema); SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["TCCCMSDBConnectionString"].ConnectionString); con.Open(); SqlCommand cmd = new SqlCommand("UpdateShipUserExportInShip", con); cmd.CommandType = CommandType.StoredProcedure; foreach (DataRow row in dataSet.Tables[0].Rows) { //cmd.Parameters.AddWithValue("@ID", int.Parse(row["ID"].ToString())); if (ShipId == int.Parse(row["ShipId"].ToString())) { cmd.Parameters.AddWithValue("@UserId", row["UserId"].ToString()); cmd.Parameters.AddWithValue("@UserCode", row["UserCode"].ToString()); int x = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); } } } } catch (Exception ex) { TccLog.UpdateLog(ex.InnerException.Message, LogMessageType.Error, "Ship Export-UpdateShipUser"); logger.Error(ex, "Ticket Export"); //throw; } }
private DataSet OpenXml() { this._mut.WaitOne(); try { DataSet ds = new DataSet(); string xsdSchema = (string)global::RainstormStudios.Web.Properties.Resources.ResourceManager.GetObject("XmlMembership"); using (MemoryStream xsdStrm = new MemoryStream(Encoding.ASCII.GetBytes(xsdSchema))) ds.ReadXmlSchema(xsdStrm); if (System.IO.File.Exists(this.XmlPath)) { using (XmlTextReader xmlRdr = new XmlTextReader(this.XmlPath)) ds.ReadXml(xmlRdr, XmlReadMode.IgnoreSchema); } // Setup PrimaryKey information. ds.Tables["Users"].PrimaryKey = new DataColumn[] { ds.Tables["Users"].Columns["UserId"], ds.Tables["Users"].Columns["ApplicationId"] }; ds.Tables["Profile"].PrimaryKey = new DataColumn[] { ds.Tables["Profile"].Columns["UserName"], ds.Tables["Profile"].Columns["ApplicationName"] }; ds.Tables["Roles"].PrimaryKey = new DataColumn[] { ds.Tables["Roles"].Columns["ApplicationId"], ds.Tables["Roles"].Columns["RoleID"] }; ds.Tables["UsersInRoles"].PrimaryKey = new DataColumn[] { ds.Tables["UsersInRoles"].Columns["RoleId"], ds.Tables["UsersInRoles"].Columns["UserId"], ds.Tables["UsersInRoles"].Columns["ApplicationId"] }; ds.Tables["Applications"].PrimaryKey = new DataColumn[] { ds.Tables["Applications"].Columns["ApplicationId"] }; ds.Tables["Membership"].PrimaryKey = new DataColumn[] { ds.Tables["Membership"].Columns["ApplicationId"], ds.Tables["Membership"].Columns["UserId"] }; ds.Tables["Paths"].PrimaryKey = new DataColumn[] { ds.Tables["Paths"].Columns["ApplicationID"], ds.Tables["Paths"].Columns["PathId"] }; // Setup Foreign Keys ds.Tables["Users"].ParentRelations.Add(ds.Tables["Applications"].Columns["ApplicationId"], ds.Tables["Users"].Columns["ApplicationId"]); ds.Tables["Profile"].ParentRelations.Add(ds.Tables["Users"].Columns["UserName"], ds.Tables["Profile"].Columns["UserName"]); ds.Tables["Profile"].ParentRelations.Add(ds.Tables["Applications"].Columns["ApplicationName"], ds.Tables["Profile"].Columns["ApplicationName"]); return(ds); } catch (Exception ex) { this.WriteEvent(ex, "OpenXml"); throw; } finally { this._mut.ReleaseMutex(); } }
/// <summary> /// 更行符合条件的一条Xml记录 /// </summary> /// <param name="strXmlPath">XML文件路径</param> /// <param name="_columns">列名数组</param> /// <param name="_columnValue">列值数组</param> /// <param name="strWhereColumnName">条件列名</param> /// <param name="strWhereColumnValue">条件列值</param> /// <returns></returns> public static bool UpdateXmlRow(string strXmlPath, string[] _columns, string[] _columnValue, string strWhereColumnName, string strWhereColumnValue) { try { string strXsdPath = strXmlPath.Substring(0, strXmlPath.IndexOf(".")) + ".xsd"; DataSet ds = new DataSet(); //读xml架构,关系到列的数据类型 ds.ReadXmlSchema(GetXmlFullPath(strXsdPath)); ds.ReadXml(GetXmlFullPath(strXmlPath)); //先判断行数 if (ds.Tables[0].Rows.Count > 0) { for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { //如果当前记录为符合Where条件的记录 if (ds.Tables[0].Rows[i][strWhereColumnName].ToString().Trim().Equals(strWhereColumnValue)) { //循环给找到行的各列赋新值 for (int j = 0; j < _columns.Length; j++) { ds.Tables[0].Rows[i][_columns[j]] = _columnValue[j]; } //更新DataSet ds.AcceptChanges(); //重新写入XML文件 ds.WriteXml(GetXmlFullPath(strXmlPath)); return(true); } } } return(false); } catch (Exception) { return(false); } }
protected CSVExportData(SerializationInfo info, StreamingContext context) { string s = (string)info.GetValue("XmlSchema", typeof(string)); if (s != null) { DataSet dataSet = new DataSet(); dataSet.ReadXmlSchema(new XmlTextReader(new StringReader(s))); if (dataSet.Tables["ExportAnswers"] != null) { base.Tables.Add(new ExportAnswersDataTable(dataSet.Tables["ExportAnswers"])); } if (dataSet.Tables["Voters"] != null) { base.Tables.Add(new VotersDataTable(dataSet.Tables["Voters"])); } if (dataSet.Tables["VoterAnswers"] != null) { base.Tables.Add(new VoterAnswersDataTable(dataSet.Tables["VoterAnswers"])); } base.DataSetName = dataSet.DataSetName; base.Prefix = dataSet.Prefix; base.Namespace = dataSet.Namespace; base.Locale = dataSet.Locale; base.CaseSensitive = dataSet.CaseSensitive; base.EnforceConstraints = dataSet.EnforceConstraints; base.Merge(dataSet, false, MissingSchemaAction.Add); this.InitVars(); } else { this.InitClass(); } base.GetSerializationData(info, context); CollectionChangeEventHandler handler = new CollectionChangeEventHandler(this.SchemaChanged); base.Tables.CollectionChanged += handler; base.Relations.CollectionChanged += handler; }
protected Division_Types_Errors_Table(SerializationInfo info, StreamingContext context) { string strSchema = ((string)(info.GetValue("XmlSchema", typeof(string)))); if ((strSchema != null)) { DataSet ds = new DataSet(); ds.ReadXmlSchema(new XmlTextReader(new StringReader(strSchema))); if ((ds.Tables["Volume_Error_Type"] != null)) { Tables.Add(new Volume_Error_TypeDataTable(ds.Tables["Volume_Error_Type"])); } if ((ds.Tables["Division_Type"] != null)) { Tables.Add(new Division_TypeDataTable(ds.Tables["Division_Type"])); } if ((ds.Tables["File_Error_Type"] != null)) { Tables.Add(new File_Error_TypeDataTable(ds.Tables["File_Error_Type"])); } DataSetName = ds.DataSetName; Prefix = ds.Prefix; Namespace = ds.Namespace; Locale = ds.Locale; CaseSensitive = ds.CaseSensitive; EnforceConstraints = ds.EnforceConstraints; Merge(ds, false, MissingSchemaAction.Add); InitVars(); } else { InitClass(); } GetSerializationData(info, context); CollectionChangeEventHandler schemaChangedHandler = SchemaChanged; Tables.CollectionChanged += schemaChangedHandler; Relations.CollectionChanged += schemaChangedHandler; }
public void TestSampleFileImportSimple() { DataSet ds = new DataSet(); XmlTextReader xtr = null; try { xtr = new XmlTextReader("Test/System.Data/schemas/test010.xsd"); xtr.XmlResolver = null; ds.ReadXmlSchema(xtr); } finally { if (xtr != null) { xtr.Close(); } } AssertDataSet("010", ds, "NewDataSet", 1, 0); DataTable dt = ds.Tables [0]; AssertDataTable("root", dt, "foo", 1, 0, 0, 0, 0, 0); AssertDataColumn("simple", dt.Columns [0], "bar", false, false, 0, 1, "bar", MappingType.Element, typeof(string), DBNull.Value, String.Empty, -1, String.Empty, 0, String.Empty, false, false); }
static void Main(string[] args) { DataSet simpleShopDb = new DataSet(); simpleShopDb.ReadXmlSchema(@"D:\ADO.NET\DATA\ShopDbSchema.xml"); simpleShopDb.ReadXml(@"D:\ADO.NET\DATA\ShopDBData.xml"); ShopDB strongedShopDB = new ShopDB(); strongedShopDB.Customers.Merge(simpleShopDb.Tables["Customers"]); strongedShopDB.Orders.Merge(simpleShopDb.Tables["Orders"]); var selectedCustomer = strongedShopDB.Customers.FindByCustomerNo(1); Console.WriteLine("{0} {1} {2}", selectedCustomer.LName, selectedCustomer.FName, selectedCustomer.MName + "\n"); foreach (var ordersRow in selectedCustomer.GetOrdersRows()) { Console.WriteLine("\tOrderID: " + ordersRow.OrderID); Console.WriteLine("\tOrderdate: " + ordersRow.OrderDate); Console.WriteLine(); } }
static void Main(string[] args) { DataSet simpleShopDb = new DataSet(); simpleShopDb.ReadXmlSchema(@"D:\ADO.NET\DATA\ShopDbSchema.xml"); simpleShopDb.ReadXml(@"D:\ADO.NET\DATA\ShopDBData.xml"); ShopDB strongedShopDB = new ShopDB(); //Слияние обычно применяется для клиентских приложений с целью включения последних изменений из источника данных в существующий класс DataTable. Это позволяет клиентскому приложению иметь класс DataTable, обновленный последними данными из источника. strongedShopDB.Customers.Merge(simpleShopDb.Tables["Customers"]); foreach (DataRow row in strongedShopDB.Customers.Rows) { foreach (DataColumn column in strongedShopDB.Customers.Columns) { Console.WriteLine("{0}: {1}", column.ColumnName, row[column]); } Console.WriteLine(); } }
protected dtTKDGTre(SerializationInfo info, StreamingContext context) { string strSchema = ((string)(info.GetValue("XmlSchema", typeof(string)))); if ((strSchema != null)) { DataSet ds = new DataSet(); ds.ReadXmlSchema(new XmlTextReader(new System.IO.StringReader(strSchema))); if ((ds.Tables["DOCGIA"] != null)) { this.Tables.Add(new DOCGIADataTable(ds.Tables["DOCGIA"])); } if ((ds.Tables["MUONSACH"] != null)) { this.Tables.Add(new MUONSACHDataTable(ds.Tables["MUONSACH"])); } if ((ds.Tables["CHITIETPHIEUMUON"] != null)) { this.Tables.Add(new CHITIETPHIEUMUONDataTable(ds.Tables["CHITIETPHIEUMUON"])); } this.DataSetName = ds.DataSetName; this.Prefix = ds.Prefix; this.Namespace = ds.Namespace; this.Locale = ds.Locale; this.CaseSensitive = ds.CaseSensitive; this.EnforceConstraints = ds.EnforceConstraints; this.Merge(ds, false, System.Data.MissingSchemaAction.Add); this.InitVars(); } else { this.InitClass(); } this.GetSerializationData(info, context); System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler = new System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged); this.Tables.CollectionChanged += schemaChangedHandler; this.Relations.CollectionChanged += schemaChangedHandler; }
/// <summary> /// 更新符合条件的一条Xml记录 /// </summary> /// <param name="strFileName"></param> /// <param name="dt_New"></param> /// <param name="dt_OLD"></param> /// <returns></returns> public static bool UpdateXmlRow(string strFileName, DataTable dt_New, DataTable dt_OLD) { try { //同上一方法 string strXDDFileName = strFileName.Substring(0, strFileName.IndexOf(".")) + ".xsd"; DataSet ds = new DataSet(); //读xml架构,关系到列的数据类型 ds.ReadXmlSchema(GetXmlFullPath(strXDDFileName)); ds.ReadXml(GetXmlFullPath(strFileName)); //先判断行数 if (ds.Tables[0].Rows.Count > 0) { for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { //如果当前记录为符合Where条件的记录 if (ds.Tables[0].Select("ID =" + dt_OLD.Rows[0]["ID"].ToString()).Length != 0) { //循环给找到行的各列赋新值 foreach (DataColumn dataColumn in ds.Tables[0].Columns) { ds.Tables[0].Select("ID =" + dt_OLD.Rows[0]["ID"].ToString())[0][dataColumn.ToString()] = dt_New.Rows[0][dataColumn.ToString()].ToString(); } //更新DataSet ds.AcceptChanges(); //重新写入XML文件 ds.WriteXml(GetXmlFullPath(strFileName)); return(true); } } } return(false); } catch (Exception ex) { return(false); } }
public virtual DataTable GetSchemaTable() { DataSet s = new DataSet(); s.Locale = System.Globalization.CultureInfo.CurrentCulture; s.ReadXmlSchema(new System.IO.StringReader(shemaTableSchema)); DataTable t = s.Tables[0]; if (Fields != null) { for (int i = 0; i < Fields.Count; i++) { DataRow row = t.NewRow(); row["ColumnName"] = Fields[i].GetName(); row["ColumnOrdinal"] = i; Type type = this.GetFieldType(i); if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(System.Nullable <int>).GetGenericTypeDefinition()) { type = type.GetGenericArguments()[0]; } row["DataType"] = Fields[i].GetPropertyType(); //row["DataTypeName"] = this.GetDataTypeName(i); row["ColumnSize"] = -1; row["AllowDBNull"] = Fields[i].AllowDBNull(); t.Rows.Add(row); } } return(t); //var dt = new DataTable(); //foreach (ChoObjectDataReaderProperty field in Fields) //{ // dt.Columns.Add(new DataColumn(field.GetName(), field.GetPropertyType())); //} //return dt; }
protected vistaForm(SerializationInfo info, StreamingContext context) { string strSchema = ((string)(info.GetValue("XmlSchema", typeof(string)))); if ((strSchema != null)) { DataSet ds = new DataSet(); ds.ReadXmlSchema(new XmlTextReader(new System.IO.StringReader(strSchema))); if ((ds.Tables["dbuser"] != null)) { this.Tables.Add(new dbuserDataTable(ds.Tables["dbuser"])); } if ((ds.Tables["dbaccess"] != null)) { this.Tables.Add(new dbaccessDataTable(ds.Tables["dbaccess"])); } if ((ds.Tables["dbdepartment"] != null)) { this.Tables.Add(new dbdepartmentDataTable(ds.Tables["dbdepartment"])); } this.DataSetName = ds.DataSetName; this.Prefix = ds.Prefix; this.Namespace = ds.Namespace; this.Locale = ds.Locale; this.CaseSensitive = ds.CaseSensitive; this.EnforceConstraints = ds.EnforceConstraints; this.Merge(ds, false, System.Data.MissingSchemaAction.Add); this.InitVars(); } else { this.InitClass(); } this.GetSerializationData(info, context); System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler = new System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged); this.Tables.CollectionChanged += schemaChangedHandler; this.Relations.CollectionChanged += schemaChangedHandler; }
public void RepeatableSimpleElement() { var ds = new DataSet(); ds.ReadXmlSchema(new StringReader( @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'> <!-- empty --> <xs:element name='Foo' type='FooType' /> <!-- defining externally to avoid being regarded as dataset element --> <xs:complexType name='FooType'> <xs:sequence> <xs:element name='Bar' maxOccurs='2' /> </xs:sequence> </xs:complexType> </xs:schema>")); AssertDataSet("012", ds, "NewDataSet", 2, 1); DataTable dt = ds.Tables[0]; AssertDataTable("parent", dt, "Foo", 1, 0, 0, 1, 1, 1); AssertDataColumn("key", dt.Columns[0], "Foo_Id", false, true, 0, 1, "Foo_Id", MappingType.Hidden, typeof(int), DBNull.Value, string.Empty, -1, string.Empty, 0, string.Empty, false, true); dt = ds.Tables[1]; AssertDataTable("repeated", dt, "Bar", 2, 0, 1, 0, 1, 0); AssertDataColumn("data", dt.Columns[0], "Bar_Column", false, false, 0, 1, "Bar_Column", MappingType.SimpleContent, typeof(string), DBNull.Value, string.Empty, -1, string.Empty, 0, string.Empty, false, false); AssertDataColumn("refkey", dt.Columns[1], "Foo_Id", true, false, 0, 1, "Foo_Id", MappingType.Hidden, typeof(int), DBNull.Value, string.Empty, -1, string.Empty, 1, string.Empty, false, false); AssertDataRelation("rel", ds.Relations[0], "Foo_Bar", true, new string[] { "Foo_Id" }, new string[] { "Foo_Id" }, true, true); }
public void ElementHasIdentityConstraint() { string constraints = @" <xs:key name='key'> <xs:selector xpath='./any/string_is_OK/R1'/> <xs:field xpath='Child2'/> </xs:key> <xs:keyref name='kref' refer='key'> <xs:selector xpath='.//R2'/> <xs:field xpath='Child2'/> </xs:keyref>"; string xsbase = @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:msdata='urn:schemas-microsoft-com:xml-msdata'> <xs:element name='DS' msdata:IsDataSet='true'> <xs:complexType> <xs:choice> <xs:element ref='R1' /> <xs:element ref='R2' /> </xs:choice> </xs:complexType> {0} </xs:element> <xs:element name='R1' type='RootType'> {1} </xs:element> <xs:element name='R2' type='RootType'> </xs:element> <xs:complexType name='RootType'> <xs:choice> <xs:element name='Child1' type='xs:string'> {2} </xs:element> <xs:element name='Child2' type='xs:string' /> </xs:choice> <xs:attribute name='Attr' type='xs:integer' /> </xs:complexType> </xs:schema>"; // Constraints on DataSet element. // Note that in xs:key xpath is crazy except for the last step string xs = string.Format(xsbase, constraints, string.Empty, string.Empty); var ds = new DataSet(); ds.ReadXmlSchema(new StringReader(xs)); Assert.Equal(1, ds.Relations.Count); // Constraints on another global element - just ignored xs = string.Format(xsbase, string.Empty, constraints, string.Empty); ds = new DataSet(); ds.ReadXmlSchema(new StringReader(xs)); Assert.Equal(0, ds.Relations.Count); // Constraints on local element - just ignored xs = string.Format(xsbase, string.Empty, string.Empty, constraints); ds = new DataSet(); ds.ReadXmlSchema(new StringReader(xs)); Assert.Equal(0, ds.Relations.Count); }
public void PrefixedTargetNS() { string xs = @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:msdata='urn:schemas-microsoft-com:xml-msdata' xmlns:x='urn:foo' targetNamespace='urn:foo' elementFormDefault='qualified'> <xs:element name='DS' msdata:IsDataSet='true'> <xs:complexType> <xs:choice> <xs:element ref='x:R1' /> <xs:element ref='x:R2' /> </xs:choice> </xs:complexType> <xs:key name='key'> <xs:selector xpath='./any/string_is_OK/x:R1'/> <xs:field xpath='x:Child2'/> </xs:key> <xs:keyref name='kref' refer='x:key'> <xs:selector xpath='.//x:R2'/> <xs:field xpath='x:Child2'/> </xs:keyref> </xs:element> <xs:element name='R3' type='x:RootType' /> <xs:complexType name='extracted'> <xs:choice> <xs:element ref='x:R1' /> <xs:element ref='x:R2' /> </xs:choice> </xs:complexType> <xs:element name='R1' type='x:RootType'> <xs:unique name='Rkey'> <xs:selector xpath='.//x:Child1'/> <xs:field xpath='.'/> </xs:unique> <xs:keyref name='Rkref' refer='x:Rkey'> <xs:selector xpath='.//x:Child2'/> <xs:field xpath='.'/> </xs:keyref> </xs:element> <xs:element name='R2' type='x:RootType'> </xs:element> <xs:complexType name='RootType'> <xs:choice> <xs:element name='Child1' type='xs:string'> </xs:element> <xs:element name='Child2' type='xs:string' /> </xs:choice> <xs:attribute name='Attr' type='xs:integer' /> </xs:complexType> </xs:schema>"; // No prefixes on tables and columns var ds = new DataSet(); ds.ReadXmlSchema(new StringReader(xs)); AssertDataSet("ds", ds, "DS", 3, 1); DataTable dt = ds.Tables[0]; AssertDataTable("R3", dt, "R3", 3, 0, 0, 0, 0, 0); AssertDataColumn("col1", dt.Columns[0], "Attr", true, false, 0, 1, "Attr", MappingType.Attribute, typeof(long), DBNull.Value, string.Empty, -1, string.Empty, 0, string.Empty, false, false); }
public void CloneCopy2() { var ds = new DataSet(); ds.ReadXmlSchema(new StringReader(DataProvider.store)); ds.Clone(); }
public void ReadTest1() { DataSet ds = CreateTestSet(); StringWriter sw = new StringWriter(); ds.WriteXmlSchema(sw); string schema = sw.ToString(); // ReadXmlSchema() ds = new DataSet(); ds.ReadXmlSchema(new XmlTextReader(schema, XmlNodeType.Document, null)); ReadTest1Check(ds); // ReadXml() should also be the same ds = new DataSet(); ds.ReadXml(new XmlTextReader(schema, XmlNodeType.Document, null)); ReadTest1Check(ds); }
public void Test5() { DataSet RegionDS = new DataSet(); RegionDS.ReadXmlSchema(new StringReader(RegionXsd)); XmlDataDocument DataDoc = new XmlDataDocument(RegionDS); DataDoc.Load(new StringReader(RegionXml)); try { DataDoc.DocumentElement.AppendChild(DataDoc.DocumentElement.FirstChild); Assert.False(true); } catch (InvalidOperationException e) { Assert.Equal(typeof(InvalidOperationException), e.GetType()); Assert.Equal("Please set DataSet.EnforceConstraints == false before trying to edit XmlDataDocument using XML operations.", e.Message); DataDoc.DataSet.EnforceConstraints = false; } XmlElement newNode = DataDoc.CreateElement("Region"); XmlElement newChildNode = DataDoc.CreateElement("RegionID"); newChildNode.InnerText = "64"; XmlElement newChildNode2 = DataDoc.CreateElement("RegionDescription"); newChildNode2.InnerText = "test node"; newNode.AppendChild(newChildNode); newNode.AppendChild(newChildNode2); DataDoc.DocumentElement.AppendChild(newNode); TextWriter text = new StringWriter(); //DataDoc.Save (text); DataDoc.DataSet.WriteXml(text); string TextString = text.ToString(); string substring = TextString.Substring(0, TextString.IndexOf("\n")); TextString = TextString.Substring(TextString.IndexOf("\n") + 1); for (int i = 0; i < 21; i++) { substring = TextString.Substring(0, TextString.IndexOf("\n")); TextString = TextString.Substring(TextString.IndexOf("\n") + 1); } Assert.True(substring.IndexOf(" <Region>") != -1); substring = TextString.Substring(0, TextString.IndexOf("\n")); TextString = TextString.Substring(TextString.IndexOf("\n") + 1); Assert.True(substring.IndexOf(" <RegionID>64</RegionID>") != -1); substring = TextString.Substring(0, TextString.IndexOf("\n")); TextString = TextString.Substring(TextString.IndexOf("\n") + 1); Assert.True(substring.IndexOf(" <RegionDescription>test node</RegionDescription>") != -1); substring = TextString.Substring(0, TextString.IndexOf("\n")); TextString = TextString.Substring(TextString.IndexOf("\n") + 1); Assert.True(substring.IndexOf(" </Region>") != -1); substring = TextString.Substring(0, TextString.Length); Assert.True(substring.IndexOf("</Root>") != -1); }
public void Test2() { DataSet RegionDS = new DataSet(); DataRow RegionRow; RegionDS.ReadXmlSchema(new StringReader(RegionXsd)); Assert.Equal(1, RegionDS.Tables.Count); XmlDataDocument DataDoc = new XmlDataDocument(RegionDS); DataDoc.Load(new StringReader(RegionXml)); RegionRow = RegionDS.Tables[0].Rows[0]; RegionDS.AcceptChanges(); RegionRow["RegionDescription"] = "Reeeeeaalllly Far East!"; RegionDS.AcceptChanges(); TextWriter text = new StringWriter(); text.NewLine = "\n"; DataDoc.Save(text); string TextString = text.ToString(); string substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); //Assert.Equal ("<?xml version=\"1.0\" encoding=\"utf-16\" standalone=\"yes\"?>", substring); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.Equal("<Root>", substring); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <Region>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <RegionID>1</RegionID>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.Equal(" <RegionDescription>Reeeeeaalllly Far East!</RegionDescription>", substring); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" </Region>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <Region>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <RegionID>2</RegionID>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <RegionDescription>Western") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" </RegionDescription>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" </Region>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <Region>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <RegionID>3</RegionID>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <RegionDescription>Northern") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" </RegionDescription>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" </Region>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <Region>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <RegionID>4</RegionID>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <RegionDescription>Southern") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" </RegionDescription>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" </Region>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <MoreData>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <Column1>12</Column1>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <Column2>Hi There</Column2>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" </MoreData>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <MoreData>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <Column1>12</Column1>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <Column2>Hi There</Column2>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" </MoreData>") != -1); }
public void NestedReferenceNotAllowed() { string xs = @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:msdata='urn:schemas-microsoft-com:xml-msdata'> <xs:element name='Root' type='unusedType' msdata:IsDataSet='true'> </xs:element> <xs:complexType name='unusedType'> <xs:sequence> <xs:element name='Child' type='xs:string' /> </xs:sequence> </xs:complexType> <xs:element name='Foo'> <xs:complexType> <xs:sequence> <xs:element ref='Root' /> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>"; // DataSet element cannot be converted into a DataTable. // (i.e. cannot be referenced in any other elements) var ds = new DataSet(); Assert.Throws<ArgumentException>(() => { ds.ReadXmlSchema(new StringReader(xs)); }); }
public void TestSampleFileXPath() { var ds = new DataSet(); ds.ReadXmlSchema(new StringReader( @"<?xml version=""1.0"" encoding=""utf-8"" ?> <xs:schema targetNamespace=""http://neurosaudio.com/Tracks.xsd"" xmlns=""http://neurosaudio.com/Tracks.xsd"" xmlns:mstns=""http://neurosaudio.com/Tracks.xsd"" xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:msdata=""urn:schemas-microsoft-com:xml-msdata"" elementFormDefault=""qualified"" id=""Tracks""> <xs:element name=""Tracks""> <xs:complexType> <xs:sequence> <xs:element name=""Track"" minOccurs=""0"" maxOccurs=""unbounded""> <xs:complexType> <xs:sequence> <xs:element name=""Title"" type=""xs:string"" /> <xs:element name=""Artist"" type=""xs:string"" minOccurs=""0"" /> <xs:element name=""Album"" type=""xs:string"" minOccurs=""0"" /> <xs:element name=""Performer"" type=""xs:string"" minOccurs=""0"" /> <xs:element name=""Sequence"" type=""xs:unsignedInt"" minOccurs=""0"" /> <xs:element name=""Genre"" type=""xs:string"" minOccurs=""0"" /> <xs:element name=""Comment"" type=""xs:string"" minOccurs=""0"" /> <xs:element name=""Year"" type=""xs:string"" minOccurs=""0"" /> <xs:element name=""Duration"" type=""xs:unsignedInt"" minOccurs=""0"" /> <xs:element name=""Path"" type=""xs:string"" /> <xs:element name=""DevicePath"" type=""xs:string"" minOccurs=""0"" /> <xs:element name=""FileSize"" type=""xs:unsignedInt"" minOccurs=""0"" /> <xs:element name=""Source"" type=""xs:string"" minOccurs=""0"" /> <xs:element name=""FlashStatus"" type=""xs:unsignedInt"" /> <xs:element name=""HDStatus"" type=""xs:unsignedInt"" /> </xs:sequence> <xs:attribute name=""ID"" type=""xs:unsignedInt"" msdata:AutoIncrement=""true"" msdata:AutoIncrementSeed=""1"" /> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <xs:key name=""TrackPK"" msdata:PrimaryKey=""true""> <xs:selector xpath="".//mstns:Track"" /> <xs:field xpath=""@ID"" /> </xs:key> </xs:element> </xs:schema>")); }
public void SingleElementTreatmentDifference() { // This is one of the most complicated case. When the content // type particle of 'Root' element is a complex element, it // is DataSet element. Otherwise, it is just a data table. // // But also note that there is another test named // LocaleOnRootWithoutIsDataSet(), that tests if locale on // the (mere) data table modifies *DataSet's* locale. // Moreover, when the schema contains another element // (regardless of its schema type), the elements will // never be treated as a DataSet. string xsbase = @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' id='hoge'> <xs:element name='Root'> <!-- When simple, it becomes table. When complex, it becomes DataSet --> <xs:complexType> <xs:choice> {0} </xs:choice> </xs:complexType> </xs:element> </xs:schema>"; string xsbase2 = @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' id='hoge'> <xs:element name='Root'> <!-- When simple, it becomes table. When complex, it becomes DataSet --> <xs:complexType> <xs:choice> {0} </xs:choice> </xs:complexType> </xs:element> <xs:element name='more' type='xs:string' /> </xs:schema>"; string simple = "<xs:element name='Child' type='xs:string' />"; string complex = @"<xs:element name='Child'> <xs:complexType> <xs:attribute name='a1' /> <xs:attribute name='a2' type='xs:integer' /> </xs:complexType> </xs:element>"; string elref = "<xs:element ref='more' />"; string xs2 = @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' id='hoge'> <xs:element name='Root' type='RootType' /> <xs:complexType name='RootType'> <xs:choice> <xs:element name='Child'> <xs:complexType> <xs:attribute name='a1' /> <xs:attribute name='a2' type='xs:integer' /> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> </xs:schema>"; var ds = new DataSet(); string xs = string.Format(xsbase, simple); ds.ReadXmlSchema(new StringReader(xs)); AssertDataSet("simple", ds, "hoge", 1, 0); AssertDataTable("simple", ds.Tables[0], "Root", 1, 0, 0, 0, 0, 0); // reference to global complex type ds = new DataSet(); ds.ReadXmlSchema(new StringReader(xs2)); AssertDataSet("external complexType", ds, "hoge", 2, 1); AssertDataTable("external Tab1", ds.Tables[0], "Root", 1, 0, 0, 1, 1, 1); AssertDataTable("external Tab2", ds.Tables[1], "Child", 3, 0, 1, 0, 1, 0); // xsbase2 + complex -> datatable ds = new DataSet(); xs = string.Format(xsbase2, complex); ds.ReadXmlSchema(new StringReader(xs)); AssertDataSet("complex", ds, "hoge", 2, 1); AssertDataTable("complex", ds.Tables[0], "Root", 1, 0, 0, 1, 1, 1); DataTable dt = ds.Tables[1]; AssertDataTable("complex", dt, "Child", 3, 0, 1, 0, 1, 0); AssertDataColumn("a1", dt.Columns["a1"], "a1", true, false, 0, 1, "a1", MappingType.Attribute, typeof(string), DBNull.Value, string.Empty, -1, string.Empty, /*0*/-1, string.Empty, false, false); AssertDataColumn("a2", dt.Columns["a2"], "a2", true, false, 0, 1, "a2", MappingType.Attribute, typeof(long), DBNull.Value, string.Empty, -1, string.Empty, /*1*/-1, string.Empty, false, false); AssertDataColumn("Root_Id", dt.Columns[2], "Root_Id", true, false, 0, 1, "Root_Id", MappingType.Hidden, typeof(int), DBNull.Value, string.Empty, -1, string.Empty, 2, string.Empty, false, false); // xsbase + complex -> dataset ds = new DataSet(); xs = string.Format(xsbase, complex); ds.ReadXmlSchema(new StringReader(xs)); AssertDataSet("complex", ds, "Root", 1, 0); ds = new DataSet(); xs = string.Format(xsbase2, elref); ds.ReadXmlSchema(new StringReader(xs)); AssertDataSet("complex", ds, "hoge", 1, 0); AssertDataTable("complex", ds.Tables[0], "Root", 1, 0, 0, 0, 0, 0); }
public void SimpleTypeComponentsIgnored() { string xs = @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'> <xs:element name='Root' type='xs:string'/> <xs:attribute name='Attr' type='xs:string'/> </xs:schema>"; var ds = new DataSet(); ds.ReadXmlSchema(new StringReader(xs)); // nothing is imported. AssertDataSet("ds", ds, "NewDataSet", 0, 0); }
public void TestAnnotatedRelation2() { var ds = new DataSet(); ds.ReadXmlSchema(new StringReader( @"<xs:schema xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:msdata=""urn:schemas-microsoft-com:xml-msdata""> <!-- just modified MSDN example --> <xs:element name=""ds"" msdata:IsDataSet=""true""> <xs:complexType> <xs:choice maxOccurs=""unbounded""> <xs:element name=""p""> <xs:complexType> <xs:sequence> <xs:element name=""pk"" type=""xs:string"" /> <xs:element name=""name"" type=""xs:string"" /> <xs:element name=""c""> <xs:annotation> <xs:appinfo> <msdata:Relationship name=""rel"" msdata:parent=""p"" msdata:child=""c"" msdata:parentkey=""pk"" msdata:childkey=""fk""/> </xs:appinfo> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element name=""fk"" type=""xs:string"" /> <xs:element name=""count"" type=""xs:int"" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> </xs:element> </xs:schema>")); AssertDataSet("102", ds, "ds", 2, 1); DataTable dt = ds.Tables[0]; AssertDataTable("parent_table", dt, "p", 2, 0, 0, 1, 0, 0); AssertDataColumn("pk", dt.Columns[0], "pk", false, false, 0, 1, "pk", MappingType.Element, typeof(string), DBNull.Value, string.Empty, -1, string.Empty, 0, string.Empty, false, false); dt = ds.Tables[1]; AssertDataTable("child_table", dt, "c", 2, 0, 1, 0, 0, 0); AssertDataColumn("fk", dt.Columns[0], "fk", false, false, 0, 1, "fk", MappingType.Element, typeof(string), DBNull.Value, string.Empty, -1, string.Empty, 0, string.Empty, false, false); AssertDataRelation("rel", ds.Relations[0], "rel", true, new string[] { "pk" }, new string[] { "fk" }, false, false); }
public void RelationFromSchema() { DataSet Set = new DataSet(); Set.ReadXmlSchema(new StringReader(DataProvider.store)); DataTable Table = Set.Tables[0]; Assert.False(Table.CaseSensitive); Assert.Equal(1, Table.ChildRelations.Count); Assert.Equal(0, Table.ParentRelations.Count); Assert.Equal(1, Table.Constraints.Count); Assert.Equal(1, Table.PrimaryKey.Length); Assert.Equal(0, Table.Rows.Count); Assert.Equal("bookstore", Table.TableName); Assert.Equal(1, Table.Columns.Count); DataRelation Relation = Table.ChildRelations[0]; Assert.Equal(1, Relation.ChildColumns.Length); Assert.Equal("bookstore_book", Relation.ChildKeyConstraint.ConstraintName); Assert.Equal(1, Relation.ChildKeyConstraint.Columns.Length); Assert.Equal("book", Relation.ChildTable.TableName); Assert.Equal("NewDataSet", Relation.DataSet.DataSetName); Assert.Equal(0, Relation.ExtendedProperties.Count); Assert.True(Relation.Nested); Assert.Equal(1, Relation.ParentColumns.Length); Assert.Equal("Constraint1", Relation.ParentKeyConstraint.ConstraintName); Assert.Equal("bookstore", Relation.ParentTable.TableName); Assert.Equal("bookstore_book", Relation.RelationName); Table = Set.Tables[1]; Assert.False(Table.CaseSensitive); Assert.Equal(1, Table.ChildRelations.Count); Assert.Equal(1, Table.ParentRelations.Count); Assert.Equal(2, Table.Constraints.Count); Assert.Equal(1, Table.PrimaryKey.Length); Assert.Equal(0, Table.Rows.Count); Assert.Equal("book", Table.TableName); Assert.Equal(5, Table.Columns.Count); Relation = Table.ChildRelations[0]; Assert.Equal(1, Relation.ChildColumns.Length); Assert.Equal("book_author", Relation.ChildKeyConstraint.ConstraintName); Assert.Equal(1, Relation.ChildKeyConstraint.Columns.Length); Assert.Equal("author", Relation.ChildTable.TableName); Assert.Equal("NewDataSet", Relation.DataSet.DataSetName); Assert.Equal(0, Relation.ExtendedProperties.Count); Assert.True(Relation.Nested); Assert.Equal(1, Relation.ParentColumns.Length); Assert.Equal("Constraint1", Relation.ParentKeyConstraint.ConstraintName); Assert.Equal("book", Relation.ParentTable.TableName); Assert.Equal("book_author", Relation.RelationName); Table = Set.Tables[2]; Assert.False(Table.CaseSensitive); Assert.Equal(0, Table.ChildRelations.Count); Assert.Equal(1, Table.ParentRelations.Count); Assert.Equal(1, Table.Constraints.Count); Assert.Equal(0, Table.PrimaryKey.Length); Assert.Equal(0, Table.Rows.Count); Assert.Equal("author", Table.TableName); Assert.Equal(3, Table.Columns.Count); }
// 001-004 public void TestSampleFileNoTables() { var ds = new DataSet(); ds.ReadXmlSchema(new StringReader(@"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'><!-- empty --></xs:schema>")); AssertDataSet("001", ds, "NewDataSet", 0, 0); ds = new DataSet(); ds.ReadXmlSchema(new StringReader(@"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'><xs:element name='foo' /></xs:schema>")); AssertDataSet("002", ds, "NewDataSet", 0, 0); ds = new DataSet(); ds.ReadXmlSchema(new StringReader( @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'> <xs:element name='foo' type='xs:integer' /> <xs:element name='bar' type='xs:string' /> </xs:schema>")); AssertDataSet("003", ds, "NewDataSet", 0, 0); ds = new DataSet(); ds.ReadXmlSchema(new StringReader( @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'> <xs:element name='foo' type='st' /> <xs:simpleType name='st'> <xs:restriction base='xs:string'> <xs:maxLength value='5' /> </xs:restriction> </xs:simpleType> </xs:schema>")); AssertDataSet("004", ds, "NewDataSet", 0, 0); }
protected myTypedDataSet(SerializationInfo info, StreamingContext context) { string strSchema = ((string)(info.GetValue("XmlSchema", typeof(string)))); if ((strSchema != null)) { var ds = new DataSet(); ds.ReadXmlSchema(new XmlTextReader(new StringReader(strSchema))); if ((ds.Tables["Order Details"] != null)) { Tables.Add(new Order_DetailsDataTable(ds.Tables["Order Details"])); } if ((ds.Tables["Orders"] != null)) { Tables.Add(new OrdersDataTable(ds.Tables["Orders"])); } DataSetName = ds.DataSetName; Prefix = ds.Prefix; Namespace = ds.Namespace; Locale = ds.Locale; CaseSensitive = ds.CaseSensitive; EnforceConstraints = ds.EnforceConstraints; Merge(ds, false, MissingSchemaAction.Add); InitVars(); } else { InitClass(); } GetSerializationData(info, context); CollectionChangeEventHandler schemaChangedHandler = new CollectionChangeEventHandler(SchemaChanged); Tables.CollectionChanged += schemaChangedHandler; Relations.CollectionChanged += schemaChangedHandler; }
public void UnusedComplexTypesIgnored() { string xs = @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' id='hoge'> <xs:element name='Root'> <xs:complexType> <xs:sequence> <xs:element name='Child' type='xs:string' /> </xs:sequence> </xs:complexType> </xs:element> <xs:complexType name='unusedType'> <xs:sequence> <xs:element name='Orphan' type='xs:string' /> </xs:sequence> </xs:complexType> </xs:schema>"; var ds = new DataSet(); ds.ReadXmlSchema(new StringReader(xs)); // Here "unusedType" table is never imported. AssertDataSet("ds", ds, "hoge", 1, 0); AssertDataTable("dt", ds.Tables[0], "Root", 1, 0, 0, 0, 0, 0); }
public void Test4() { DataSet RegionDS = new DataSet(); RegionDS.ReadXmlSchema(new StringReader(RegionXsd)); XmlDataDocument DataDoc = new XmlDataDocument(RegionDS); DataDoc.Load(new StringReader(RegionXml)); Assert.True(RegionDS.EnforceConstraints); DataTable table = DataDoc.DataSet.Tables["Region"]; DataRow newRow = table.NewRow(); newRow[0] = "new row"; newRow[1] = "new description"; table.Rows.Add(newRow); TextWriter text = new StringWriter(); text.NewLine = "\n"; DataDoc.Save(text); string TextString = text.ToString(); string substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf("<Root>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <Region>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <RegionID>1</RegionID>") != -1); substring = TextString.Substring(0, TextString.IndexOfAny(new[] { '\r', '\n' })); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); // Regardless of NewLine value, original xml contains CR // (but in the context of XML spec, it should be normalized) Assert.Equal(" <RegionDescription>Eastern", substring); substring = TextString.Substring(0, TextString.IndexOfAny(new[] { '\r', '\n' })); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.Equal(" </RegionDescription>", substring); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" </Region>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <Region>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <RegionID>2</RegionID>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <RegionDescription>Western") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" </RegionDescription>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" </Region>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <Region>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <RegionID>3</RegionID>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <RegionDescription>Northern") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" </RegionDescription>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" </Region>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <Region>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <RegionID>4</RegionID>") != -1); substring = TextString.Substring(0, TextString.IndexOfAny(new[] { '\r', '\n' })); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); // Regardless of NewLine value, original xml contains CR // (but in the context of XML spec, it should be normalized) Assert.Equal(" <RegionDescription>Southern", substring); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" </RegionDescription>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" </Region>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <MoreData>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <Column1>12</Column1>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <Column2>Hi There</Column2>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" </MoreData>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <MoreData>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <Column1>12</Column1>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <Column2>Hi There</Column2>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" </MoreData>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <Region>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <RegionID>new row</RegionID>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" <RegionDescription>new description</RegionDescription>") != -1); substring = TextString.Substring(0, TextString.IndexOf(s_EOL)); TextString = TextString.Substring(TextString.IndexOf(s_EOL) + s_EOL.Length); Assert.True(substring.IndexOf(" </Region>") != -1); substring = TextString.Substring(0, TextString.Length); Assert.True(substring.IndexOf("</Root>") != -1); }
public void SuspiciousDataSetElement() { string schema = @"<?xml version='1.0'?> <xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'> <xsd:attribute name='foo' type='xsd:string'/> <xsd:attribute name='bar' type='xsd:string'/> <xsd:complexType name='attRef'> <xsd:attribute name='att1' type='xsd:int'/> <xsd:attribute name='att2' type='xsd:string'/> </xsd:complexType> <xsd:element name='doc'> <xsd:complexType> <xsd:choice> <xsd:element name='elem' type='attRef'/> </xsd:choice> </xsd:complexType> </xsd:element> </xsd:schema>"; var ds = new DataSet(); ds.ReadXmlSchema(new StringReader(schema)); AssertDataSet("ds", ds, "doc", 1, 0); AssertDataTable("table", ds.Tables[0], "elem", 2, 0, 0, 0, 0, 0); }
public void Test6() { DataSet RegionDS = new DataSet(); RegionDS.ReadXmlSchema(new StringReader(RegionXsd)); XmlDataDocument DataDoc = new XmlDataDocument(RegionDS); DataDoc.Load(new StringReader(RegionXml)); DataDoc.DataSet.EnforceConstraints = false; XmlElement newNode = DataDoc.CreateElement("Region"); XmlElement newChildNode = DataDoc.CreateElement("RegionID"); newChildNode.InnerText = "64"; XmlElement newChildNode2 = null; try { newChildNode2 = DataDoc.CreateElement("something else"); Assert.False(true); } catch (XmlException) { } newChildNode2 = DataDoc.CreateElement("something_else"); newChildNode2.InnerText = "test node"; newNode.AppendChild(newChildNode); newNode.AppendChild(newChildNode2); DataDoc.DocumentElement.AppendChild(newNode); TextWriter text = new StringWriter(); //DataDoc.Save (text); DataDoc.DataSet.WriteXml(text); string TextString = text.ToString(); string substring = TextString.Substring(0, TextString.IndexOf("\n") - 1); TextString = TextString.Substring(TextString.IndexOf("\n") + 1); for (int i = 0; i < 21; i++) { substring = TextString.Substring(0, TextString.IndexOf("\n")); TextString = TextString.Substring(TextString.IndexOf("\n") + 1); } Assert.True(substring.IndexOf(" <Region>") != -1); substring = TextString.Substring(0, TextString.IndexOf("\n")); TextString = TextString.Substring(TextString.IndexOf("\n") + 1); Assert.True(substring.IndexOf(" <RegionID>64</RegionID>") != -1); substring = TextString.Substring(0, TextString.IndexOf("\n")); TextString = TextString.Substring(TextString.IndexOf("\n") + 1); Assert.True(substring.IndexOf(" </Region>") != -1); substring = TextString.Substring(0, TextString.Length); Assert.True(substring.IndexOf("</Root>") != -1); }
public void TestSampleFileComplexTables3() { var ds = new DataSet(); ds.ReadXmlSchema(new StringReader( @"<!-- Modified w3ctests attQ014.xsd --> <xsd:schema xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" targetNamespace=""http://xsdtesting"" xmlns:x=""http://xsdtesting""> <xsd:element name=""root""> <xsd:complexType> <xsd:sequence> <xsd:element name=""e""> <xsd:complexType> <xsd:simpleContent> <xsd:extension base=""xsd:decimal""> <xsd:attribute name=""a"" type=""xsd:string""/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema>")); AssertDataSet("013", ds, "root", 1, 0); DataTable dt = ds.Tables[0]; AssertDataTable("root", dt, "e", 2, 0, 0, 0, 0, 0); AssertDataColumn("attr", dt.Columns[0], "a", true, false, 0, 1, "a", MappingType.Attribute, typeof(string), DBNull.Value, string.Empty, -1, string.Empty, 0, string.Empty, false, false); AssertDataColumn("simple", dt.Columns[1], "e_text", false, false, 0, 1, "e_text", MappingType.SimpleContent, typeof(decimal), DBNull.Value, string.Empty, -1, string.Empty, 1, string.Empty, false, false); }
public void ReadXmlSchema() { var ds = new DataSet(); ds.ReadXmlSchema(new StringReader(DataProvider.own_schema)); Assert.Equal(2, ds.Tables.Count); DataTable Table = ds.Tables[0]; Assert.Equal("test_table", Table.TableName); Assert.Equal("", Table.Namespace); Assert.Equal(2, Table.Columns.Count); Assert.Equal(0, Table.Rows.Count); Assert.False(Table.CaseSensitive); Assert.Equal(1, Table.Constraints.Count); Assert.Equal("", Table.Prefix); Constraint cons = Table.Constraints[0]; Assert.Equal("Constraint1", cons.ConstraintName.ToString()); Assert.Equal("Constraint1", cons.ToString()); DataColumn column = Table.Columns[0]; Assert.True(column.AllowDBNull); Assert.False(column.AutoIncrement); Assert.Equal(0L, column.AutoIncrementSeed); Assert.Equal(1L, column.AutoIncrementStep); Assert.Equal("test", column.Caption); Assert.Equal("Element", column.ColumnMapping.ToString()); Assert.Equal("first", column.ColumnName); Assert.Equal("System.String", column.DataType.ToString()); Assert.Equal("test_default_value", column.DefaultValue.ToString()); Assert.False(column.DesignMode); Assert.Equal("", column.Expression); Assert.Equal(100, column.MaxLength); Assert.Equal("", column.Namespace); Assert.Equal(0, column.Ordinal); Assert.Equal("", column.Prefix); Assert.False(column.ReadOnly); Assert.True(column.Unique); DataColumn column2 = Table.Columns[1]; Assert.True(column2.AllowDBNull); Assert.False(column2.AutoIncrement); Assert.Equal(0L, column2.AutoIncrementSeed); Assert.Equal(1L, column2.AutoIncrementStep); Assert.Equal("second", column2.Caption); Assert.Equal("Element", column2.ColumnMapping.ToString()); Assert.Equal("second", column2.ColumnName); Assert.Equal("System.Data.SqlTypes.SqlGuid", column2.DataType.ToString()); Assert.Equal(SqlGuid.Null, column2.DefaultValue); Assert.False(column2.DesignMode); Assert.Equal("", column2.Expression); Assert.Equal(-1, column2.MaxLength); Assert.Equal("", column2.Namespace); Assert.Equal(1, column2.Ordinal); Assert.Equal("", column2.Prefix); Assert.False(column2.ReadOnly); Assert.False(column2.Unique); DataTable Table2 = ds.Tables[1]; Assert.Equal("second_test_table", Table2.TableName); Assert.Equal("", Table2.Namespace); Assert.Equal(1, Table2.Columns.Count); Assert.Equal(0, Table2.Rows.Count); Assert.False(Table2.CaseSensitive); Assert.Equal(1, Table2.Constraints.Count); Assert.Equal("", Table2.Prefix); DataColumn column3 = Table2.Columns[0]; Assert.True(column3.AllowDBNull); Assert.False(column3.AutoIncrement); Assert.Equal(0L, column3.AutoIncrementSeed); Assert.Equal(1L, column3.AutoIncrementStep); Assert.Equal("second_first", column3.Caption); Assert.Equal("Element", column3.ColumnMapping.ToString()); Assert.Equal("second_first", column3.ColumnName); Assert.Equal("System.String", column3.DataType.ToString()); Assert.Equal("default_value", column3.DefaultValue.ToString()); Assert.False(column3.DesignMode); Assert.Equal("", column3.Expression); Assert.Equal(100, column3.MaxLength); Assert.Equal("", column3.Namespace); Assert.Equal(0, column3.Ordinal); Assert.Equal("", column3.Prefix); Assert.False(column3.ReadOnly); Assert.True(column3.Unique); }
public void TestSampleFileComplexTables() { // Nested simple type element var ds = new DataSet(); ds.ReadXmlSchema(new StringReader( @"<!-- nested tables, root references to complex type --> <xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' targetNamespace='urn:foo' xmlns:x='urn:foo'> <xs:element name='uno' type='x:t' /> <xs:complexType name='t'> <xs:sequence> <xs:element name='des'> <xs:complexType> <xs:sequence> <xs:element name='tres' /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:schema>")); AssertDataSet("007", ds, "NewDataSet", 2, 1); DataTable dt = ds.Tables[0]; AssertDataTable("tab1", dt, "uno", 1, 0, 0, 1, 1, 1); AssertDataColumn("id", dt.Columns[0], "uno_Id", false, true, 0, 1, "uno_Id", MappingType.Hidden, typeof(int), DBNull.Value, string.Empty, -1, "urn:foo", 0, string.Empty, false, true); dt = ds.Tables[1]; AssertDataTable("tab2", dt, "des", 2, 0, 1, 0, 1, 0); AssertDataColumn("child", dt.Columns[0], "tres", false, false, 0, 1, "tres", MappingType.Element, typeof(string), DBNull.Value, string.Empty, -1, string.Empty, 0, string.Empty, false, false); AssertDataColumn("id", dt.Columns[1], "uno_Id", true, false, 0, 1, "uno_Id", MappingType.Hidden, typeof(int), DBNull.Value, string.Empty, -1, string.Empty, 1, string.Empty, false, false); // External simple type element ds = new DataSet(); ds.ReadXmlSchema(new StringReader( @"<!-- reference to external simple element --> <xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' targetNamespace='urn:foo' xmlns:x='urn:foo'> <xs:element name='uno' type='x:t' /> <xs:element name='tres' type='xs:string' /> <xs:complexType name='t'> <xs:sequence> <xs:element name='des'> <xs:complexType> <xs:sequence> <xs:element ref='x:tres' /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:schema>")); AssertDataSet("008", ds, "NewDataSet", 2, 1); dt = ds.Tables[0]; AssertDataTable("tab1", dt, "uno", 1, 0, 0, 1, 1, 1); AssertDataColumn("id", dt.Columns[0], "uno_Id", false, true, 0, 1, "uno_Id", MappingType.Hidden, typeof(int), DBNull.Value, string.Empty, -1, "urn:foo", 0, string.Empty, false, true); dt = ds.Tables[1]; AssertDataTable("tab2", dt, "des", 2, 0, 1, 0, 1, 0); AssertDataColumn("child", dt.Columns[0], "tres", false, false, 0, 1, "tres", MappingType.Element, typeof(string), DBNull.Value, string.Empty, -1, "urn:foo", 0, string.Empty, false, false); AssertDataColumn("id", dt.Columns[1], "uno_Id", true, false, 0, 1, "uno_Id", MappingType.Hidden, typeof(int), DBNull.Value, string.Empty, -1, string.Empty, 1, string.Empty, false, false); }
public void TestSampleFileSimpleTables() { var ds = new DataSet(); ds.ReadXmlSchema(new StringReader( @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'> <xs:element name='foo' type='ct' /> <xs:complexType name='ct'> <xs:simpleContent> <xs:extension base='xs:integer'> <xs:attribute name='attr' /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:schema>")); AssertDataSet("005", ds, "NewDataSet", 1, 0); DataTable dt = ds.Tables[0]; AssertDataTable("tab", dt, "foo", 2, 0, 0, 0, 0, 0); AssertDataColumn("attr", dt.Columns[0], "attr", true, false, 0, 1, "attr", MappingType.Attribute, typeof(string), DBNull.Value, string.Empty, -1, string.Empty, 0, string.Empty, false, false); AssertDataColumn("text", dt.Columns[1], "foo_text", false, false, 0, 1, "foo_text", MappingType.SimpleContent, typeof(long), DBNull.Value, string.Empty, -1, string.Empty, 1, string.Empty, false, false); ds = new DataSet(); ds.ReadXmlSchema(new StringReader( @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'> <xs:element name='foo' type='st' /> <xs:complexType name='st'> <xs:attribute name='att1' /> <xs:attribute name='att2' type='xs:int' default='2' /> </xs:complexType> </xs:schema>")); AssertDataSet("006", ds, "NewDataSet", 1, 0); dt = ds.Tables[0]; AssertDataTable("tab", dt, "foo", 2, 0, 0, 0, 0, 0); AssertDataColumn("att1", dt.Columns["att1"], "att1", true, false, 0, 1, "att1", MappingType.Attribute, typeof(string), DBNull.Value, string.Empty, -1, string.Empty, /*0*/-1, string.Empty, false, false); AssertDataColumn("att2", dt.Columns["att2"], "att2", true, false, 0, 1, "att2", MappingType.Attribute, typeof(int), 2, string.Empty, -1, string.Empty, /*1*/-1, string.Empty, false, false); }
public void IsDataSetOnLocalElementIgnored() { string xsbase = @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:msdata='urn:schemas-microsoft-com:xml-msdata'> <xs:element name='Root' type='unusedType'> </xs:element> <xs:complexType name='unusedType'> <xs:sequence> <xs:element name='Child' type='xs:string' msdata:IsDataSet='True' /> </xs:sequence> </xs:complexType> </xs:schema>"; // msdata:IsDataSet does not affect even if the value is invalid string xs = string.Format(xsbase, "true"); var ds = new DataSet(); ds.ReadXmlSchema(new StringReader(xs)); // Child should not be regarded as DataSet element AssertDataSet("ds", ds, "NewDataSet", 1, 0); }
public void XmlLoadTest() { var ds = new DataSet(); ds.ReadXmlSchema(new StringReader( @"<?xml version=""1.0"" standalone=""yes""?> <xs:schema id=""NewDataSet"" xmlns="""" xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:msdata=""urn:schemas-microsoft-com:xml-msdata""> <xs:element name=""NewDataSet"" msdata:IsDataSet=""true"" msdata:MainDataTable=""DESC"" msdata:UseCurrentLocale=""true""> <xs:complexType> <xs:choice minOccurs=""0"" maxOccurs=""unbounded""> <xs:element name=""DESC""> <xs:complexType> <xs:sequence> <xs:element name=""ColumnName"" msdata:ReadOnly=""true"" type=""xs:string"" minOccurs=""0"" /> <xs:element name=""DataType"" msdata:DataType=""System.Type, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"" msdata:ReadOnly=""true"" type=""xs:string"" minOccurs=""0"" /> <xs:element name=""IsAutoIncrement"" msdata:ReadOnly=""true"" type=""xs:boolean"" minOccurs=""0"" /> <xs:element name=""AllowDBNull"" msdata:ReadOnly=""true"" type=""xs:boolean"" minOccurs=""0"" /> <xs:element name=""IsReadOnly"" msdata:ReadOnly=""true"" type=""xs:boolean"" minOccurs=""0"" /> <xs:element name=""IsKey"" msdata:ReadOnly=""true"" type=""xs:boolean"" minOccurs=""0"" /> <xs:element name=""IsUnique"" msdata:ReadOnly=""true"" type=""xs:boolean"" minOccurs=""0"" /> <xs:element name=""ColumnSize"" msdata:ReadOnly=""true"" type=""xs:int"" minOccurs=""0"" /> <xs:element name=""ColumnNumber"" msdata:ReadOnly=""true"" type=""xs:int"" minOccurs=""0"" /> <xs:element name=""Summary"" type=""xs:boolean"" minOccurs=""0"" /> <xs:element name=""Print"" type=""xs:boolean"" minOccurs=""0"" /> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> <xs:unique name=""Constraint1""> <xs:selector xpath="".//DESC"" /> <xs:field xpath=""ColumnName"" /> </xs:unique> </xs:element> </xs:schema>")); ds.ReadXml(new StringReader( @"<?xml version=""1.0"" standalone=""yes""?> <DocumentElement> <DESC> <ColumnName>ColumnName</ColumnName> <DataType>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</DataType> <IsAutoIncrement>false</IsAutoIncrement> <AllowDBNull>true</AllowDBNull> <IsReadOnly>true</IsReadOnly> <IsKey>false</IsKey> <IsUnique>false</IsUnique> <ColumnSize>0</ColumnSize> </DESC> <DESC> <ColumnName>DataType</ColumnName> <DataType>System.Type, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</DataType> <IsAutoIncrement>false</IsAutoIncrement> <AllowDBNull>true</AllowDBNull> <IsReadOnly>true</IsReadOnly> <IsKey>false</IsKey> <IsUnique>false</IsUnique> <ColumnSize>0</ColumnSize> </DESC> <DESC> <ColumnName>IsAutoIncrement</ColumnName> <DataType>System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</DataType> <IsAutoIncrement>false</IsAutoIncrement> <AllowDBNull>true</AllowDBNull> <IsReadOnly>true</IsReadOnly> <IsKey>false</IsKey> <IsUnique>false</IsUnique> <ColumnSize>0</ColumnSize> </DESC> <DESC> <ColumnName>AllowDBNull</ColumnName> <DataType>System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</DataType> <IsAutoIncrement>false</IsAutoIncrement> <AllowDBNull>true</AllowDBNull> <IsReadOnly>true</IsReadOnly> <IsKey>false</IsKey> <IsUnique>false</IsUnique> <ColumnSize>0</ColumnSize> </DESC> <DESC> <ColumnName>IsReadOnly</ColumnName> <DataType>System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</DataType> <IsAutoIncrement>false</IsAutoIncrement> <AllowDBNull>true</AllowDBNull> <IsReadOnly>true</IsReadOnly> <IsKey>false</IsKey> <IsUnique>false</IsUnique> <ColumnSize>0</ColumnSize> </DESC> <DESC> <ColumnName>IsKey</ColumnName> <DataType>System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</DataType> <IsAutoIncrement>false</IsAutoIncrement> <AllowDBNull>true</AllowDBNull> <IsReadOnly>true</IsReadOnly> <IsKey>false</IsKey> <IsUnique>false</IsUnique> <ColumnSize>0</ColumnSize> </DESC> <DESC> <ColumnName>IsUnique</ColumnName> <DataType>System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</DataType> <IsAutoIncrement>false</IsAutoIncrement> <AllowDBNull>true</AllowDBNull> <IsReadOnly>true</IsReadOnly> <IsKey>false</IsKey> <IsUnique>false</IsUnique> <ColumnSize>0</ColumnSize> </DESC> <DESC> <ColumnName>ColumnSize</ColumnName> <DataType>System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</DataType> <IsAutoIncrement>false</IsAutoIncrement> <AllowDBNull>true</AllowDBNull> <IsReadOnly>true</IsReadOnly> <IsKey>false</IsKey> <IsUnique>false</IsUnique> <ColumnSize>0</ColumnSize> </DESC> <DESC> <ColumnName>ColumnNumber</ColumnName> <DataType>System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</DataType> <IsAutoIncrement>false</IsAutoIncrement> <AllowDBNull>true</AllowDBNull> <IsReadOnly>true</IsReadOnly> <IsKey>false</IsKey> <IsUnique>false</IsUnique> <ColumnSize>0</ColumnSize> </DESC> <DESC> <ColumnName>Summary</ColumnName> <DataType>System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</DataType> <IsAutoIncrement>false</IsAutoIncrement> <AllowDBNull>true</AllowDBNull> <IsReadOnly>true</IsReadOnly> <IsKey>false</IsKey> <IsUnique>false</IsUnique> <ColumnSize>0</ColumnSize> </DESC> <DESC> <ColumnName>Print</ColumnName> <DataType>System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</DataType> <IsAutoIncrement>false</IsAutoIncrement> <AllowDBNull>true</AllowDBNull> <IsReadOnly>true</IsReadOnly> <IsKey>false</IsKey> <IsUnique>false</IsUnique> <ColumnSize>0</ColumnSize> </DESC> </DocumentElement>")); }
public void ReadConstraints() { var ds = new DataSet(); ds.ReadXmlSchema(new StringReader( @"<?xml version=""1.0"" encoding=""utf-8""?> <xs:schema id=""NewDataSet"" xmlns="""" xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:msdata=""urn:schemas-microsoft-com:xml-msdata""> <xs:element name=""NewDataSet"" msdata:IsDataSet=""true"" msdata:Locale=""en-US""> <xs:complexType> <xs:choice maxOccurs=""unbounded""> <xs:element name=""Table1""> <xs:complexType> <xs:sequence> <xs:element name=""col1"" type=""xs:int"" minOccurs=""0"" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name=""Table2""> <xs:complexType> <xs:sequence> <xs:element name=""col1"" type=""xs:int"" minOccurs=""0"" /> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> <xs:unique name=""Constraint1""> <xs:selector xpath="".//Table1"" /> <xs:field xpath=""col1"" /> </xs:unique> <xs:keyref name=""fk1"" refer=""Constraint1"" msdata:ConstraintOnly=""true""> <xs:selector xpath="".//Table2"" /> <xs:field xpath=""col1"" /> </xs:keyref> </xs:element> </xs:schema>")); Assert.Equal(0, ds.Relations.Count); Assert.Equal(1, ds.Tables[0].Constraints.Count); Assert.Equal(1, ds.Tables[1].Constraints.Count); Assert.Equal("fk1", ds.Tables[1].Constraints[0].ConstraintName); }
public void LocaleOnRootWithoutIsDataSet() { string xs = @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:msdata='urn:schemas-microsoft-com:xml-msdata'> <xs:element name='Root' msdata:Locale='ja-JP'> <xs:complexType> <xs:sequence> <xs:element name='Child' type='xs:string' /> </xs:sequence> <xs:attribute name='Attr' type='xs:integer' /> </xs:complexType> </xs:element> </xs:schema>"; var ds = new DataSet(); ds.ReadXmlSchema(new StringReader(xs)); AssertDataSet("ds", ds, "NewDataSet", 1, 0); Assert.Equal("fi-FI", ds.Locale.Name); // DataSet's Locale comes from current thread DataTable dt = ds.Tables[0]; AssertDataTable("dt", dt, "Root", 2, 0, 0, 0, 0, 0); Assert.Equal("ja-JP", dt.Locale.Name); // DataTable's Locale comes from msdata:Locale AssertDataColumn("col1", dt.Columns[0], "Attr", true, false, 0, 1, "Attr", MappingType.Attribute, typeof(long), DBNull.Value, string.Empty, -1, string.Empty, 0, string.Empty, false, false); AssertDataColumn("col2", dt.Columns[1], "Child", false, false, 0, 1, "Child", MappingType.Element, typeof(string), DBNull.Value, string.Empty, -1, string.Empty, 1, string.Empty, false, false); }
public void ReadAnnotatedRelations_MultipleColumns() { var ds = new DataSet(); ds.ReadXmlSchema(new StringReader( @"<?xml version=""1.0"" standalone=""yes""?> <xs:schema id=""NewDataSet"" xmlns="""" xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:msdata=""urn:schemas-microsoft-com:xml-msdata""> <xs:element name=""NewDataSet"" msdata:IsDataSet=""true""> <xs:complexType> <xs:choice maxOccurs=""unbounded""> <xs:element name=""Table1""> <xs:complexType> <xs:sequence> <xs:element name=""col_x0020_1"" type=""xs:int"" minOccurs=""0"" /> <xs:element name=""col2"" type=""xs:int"" minOccurs=""0"" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name=""Table2""> <xs:complexType> <xs:sequence> <xs:element name=""col1"" type=""xs:int"" minOccurs=""0"" /> <xs:element name=""col_x0020__x0020_2"" type=""xs:int"" minOccurs=""0"" /> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> </xs:element> <xs:annotation> <xs:appinfo> <msdata:Relationship name=""rel"" msdata:parent=""Table1"" msdata:child=""Table2"" msdata:parentkey=""col_x0020_1 col2"" msdata:childkey=""col1 col_x0020__x0020_2"" /> </xs:appinfo> </xs:annotation> </xs:schema>")); Assert.Equal(1, ds.Relations.Count); Assert.Equal("rel", ds.Relations[0].RelationName); Assert.Equal(2, ds.Relations[0].ParentColumns.Length); Assert.Equal(2, ds.Relations[0].ChildColumns.Length); Assert.Equal(0, ds.Tables[0].Constraints.Count); Assert.Equal(0, ds.Tables[1].Constraints.Count); AssertDataRelation("TestRel", ds.Relations[0], "rel", false, new string[] { "col 1", "col2" }, new string[] { "col1", "col 2" }, false, false); }
public void IsDataSetAndTypeIgnored() { string xsbase = @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:msdata='urn:schemas-microsoft-com:xml-msdata'> <xs:element name='Root' type='unusedType' msdata:IsDataSet='{0}'> </xs:element> <xs:complexType name='unusedType'> <xs:sequence> <xs:element name='Child' type='xs:string' /> </xs:sequence> </xs:complexType> </xs:schema>"; // Even if a global element uses a complexType, it will be // ignored if the element has msdata:IsDataSet='true' string xs = string.Format(xsbase, "true"); var ds = new DataSet(); ds.ReadXmlSchema(new StringReader(xs)); AssertDataSet("ds", ds, "Root", 0, 0); // name is "Root" // But when explicit msdata:IsDataSet value is "false", then // treat as usual. xs = string.Format(xsbase, "false"); ds = new DataSet(); ds.ReadXmlSchema(new StringReader(xs)); AssertDataSet("ds", ds, "NewDataSet", 1, 0); }
public void TestMoreThanOneRepeatableColumns() { var ds = new DataSet(); ds.ReadXmlSchema(new StringReader( @"<xsd:schema xmlns:xsd=""http://www.w3.org/2001/XMLSchema""> <xsd:element name=""root""> <xsd:complexType> <xsd:sequence> <xsd:element name=""x"" maxOccurs=""2"" /> <xsd:element ref=""y"" maxOccurs=""unbounded"" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name=""y"" /> </xsd:schema>")); AssertDataSet("014", ds, "NewDataSet", 3, 2); DataTable dt = ds.Tables[0]; AssertDataTable("parent", dt, "root", 1, 0, 0, 2, 1, 1); AssertDataColumn("key", dt.Columns[0], "root_Id", false, true, 0, 1, "root_Id", MappingType.Hidden, typeof(int), DBNull.Value, string.Empty, -1, string.Empty, 0, string.Empty, false, true); dt = ds.Tables[1]; AssertDataTable("repeated", dt, "x", 2, 0, 1, 0, 1, 0); AssertDataColumn("data_1", dt.Columns[0], "x_Column", false, false, 0, 1, "x_Column", MappingType.SimpleContent, typeof(string), DBNull.Value, string.Empty, -1, string.Empty, 0, string.Empty, false, false); AssertDataColumn("refkey_1", dt.Columns[1], "root_Id", true, false, 0, 1, "root_Id", MappingType.Hidden, typeof(int), DBNull.Value, string.Empty, -1, string.Empty, 1, string.Empty, false, false); dt = ds.Tables[2]; AssertDataTable("repeated", dt, "y", 2, 0, 1, 0, 1, 0); AssertDataColumn("data", dt.Columns[0], "y_Column", false, false, 0, 1, "y_Column", MappingType.SimpleContent, typeof(string), DBNull.Value, string.Empty, -1, string.Empty, 0, string.Empty, false, false); AssertDataColumn("refkey", dt.Columns[1], "root_Id", true, false, 0, 1, "root_Id", MappingType.Hidden, typeof(int), DBNull.Value, string.Empty, -1, string.Empty, 1, string.Empty, false, false); AssertDataRelation("rel", ds.Relations[0], "root_x", true, new string[] { "root_Id" }, new string[] { "root_Id" }, true, true); AssertDataRelation("rel", ds.Relations[1], "root_y", true, new string[] { "root_Id" }, new string[] { "root_Id" }, true, true); }