2011-12-19 69 views
1

問:如何知道在一個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

您可以通過InputStream(文件上傳#PostedFile)上傳文件到XDocument.Load()方法的對象(Linq- XML)讀取/解析XML文檔。之後,您可以將xml數據與數據庫進行比較。

+0

比較各個領域?!! 這種表現是否明智? – 2011-12-19 08:55:51

+1

當您的站點使用Linq-SQL或EDM代替Core ADO.NET時,您可以輕鬆比較值。 – adatapost 2011-12-19 08:58:28

+0

我使用'informix數據庫'。 我編輯我的問題,並把一些代碼。請你給我簡單的例子。 – 2011-12-19 09:01:36

相關問題