2011-12-19 19 views
1

Q:xmlファイルで更新された属性を知る方法

が、私は私のユーザーは、私のデータベースにその内容を挿入するためにxmlファイルをアップロードすることができます。

更新されたファイルを再度アップロードせずにデータベース内の同等のフィールドを更新するように変更された属性を知っているかどうかを尋ねます(このファイルに関連するすべてのデータを消去して再度挿入します)。

フォームよりも何らかの方法がありますか?

私のxmlスニップ:

<day name="Saturday" short="Sa" day="0"/> 
<day name="Sunday" short="Su" day="1"/> 
<day name="Monday" short="Mo" day="2"/> 
<day name="Tuesday" short="Tu" day="3"/> 
<day name="Wednesday" short="We" day="4"/> 
<day name="Thursday" short="Th" day="5"/> 

私は.csがチョキ:

     List<Day> days = new List<Day>();//List of days. 
         IEnumerable<DayNode> resultDays = ReadDayNodes(targetFileName); 
         foreach (DayNode name in resultDays) 
         { 
          Day day = new Day(); 

          if (!string.IsNullOrEmpty(ddl_batch.SelectedValue)) 
           day.BatchNum = int.Parse(ddl_batch.SelectedValue); 
          if (!string.IsNullOrEmpty(ddl_department.SelectedValue)) 
           day.DepCode = int.Parse(ddl_department.SelectedValue); 
          if (!string.IsNullOrEmpty(ddl_study.SelectedValue)) 
           day.StudyCode = int.Parse(ddl_study.SelectedValue); 
          if (!string.IsNullOrEmpty(name.Day)) 
           day.DayId = name.Day; 
          day.ShortName = name.Short; 
          day.Name = name.Name; 
          days.Add(day); 
         } 
    /********************************************************************************************************************/ 
      private struct DayNode 
      { 
       public string Name { get; private set; } 
       public string Short { get; private set; } 
       public string Day { get; private set; } 
       public DayNode(string Name, string Short, string Day) 
        : this() 
       { 
        this.Name = Name; 
        this.Short = Short; 
        this.Day = Day; 
       } 
      } 
     /********************************************************************************************************************/ 
     private static IEnumerable<DayNode> ReadDayNodes(string filePath) 
     { 
      using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read)) 
      using (XmlReader xrdr = new XmlTextReader(fs)) 
       while (xrdr.Read()) 
        if (xrdr.NodeType == XmlNodeType.Element && xrdr.LocalName == "day") 
         yield return new DayNode(xrdr.GetAttribute("name"), xrdr.GetAttribute("short"), xrdr.GetAttribute("day")); 
     } 
     /********************************************************************************************************************/ 
      resultDay = CommonUitilities.InsertDays(days); 

答えて

1

あなたはXDocument.Load()方法(Linq-にアップロードされたファイルのInputStream(のFileUpload#PostedFile)オブジェクトを渡すことができますXML)を使用してXML文書を読み取り/解析します。その後、xmlデータとデータベースを比較することができます。

+0

各フィールドを比較しますか? このパフォーマンスは良いですか? –

+1

Linq-SQLまたはEDMがCore ADO.NETではなくサイトで使用されている場合は、簡単に値を比較できます。 – adatapost

+0

私は 'informix database'を使います。 私の質問を編集し、いくつかのコードを書いています。簡単な例をお願いします。 –

関連する問題