2012-05-31 22 views
0

我正在嘗試做一些事情,這可能非常簡單,所以請耐心等待,我只想從XML文件中將屬性轉換爲C#代碼中的字符串。這裏就是我:使用XmlAttribute()在C#中檢索visual2005

XML:

<MonitorResponseRecord Enabled="false" DisplayName="ValveFailureAtCentralPosition"> 
     <ExpressionMonitor> 
     <AlarmName>Valve_Position_Fault</AlarmName> 
      <Parameter> Sensor Position = {X}</Parameter> 
     </ExpressionMonitor> 
</MonitorResponseRecord> 
<MonitorResponseRecord ... ... ...> 
... ... 
... ... and so on about 1600 times. 

C#:

[Selrializable] 
[XmlType("Alarm")] 
public class AlarmDefinition 
    { 
     public AlarmDefinition() {} 
     public AlarmDefinition Clone() 
     { 
      AlarmDefinition clone = new AlarmDefinition(); 
      clone.DisplayName = DisplayName; 
          clone.Category = Category; 
     clone.Color = Color; 
     clone.Description = Description; 
          return clone; 

       } 

    [XmlAttribute(???????????)] public string DisplayName = ""; 

因此,沒有人知道我需要在 '????????'部分? 我已經試過:

[XmlAttribute("MonitorResponseRecord",AttributeName = "DisplayName")] public string DisplayName = ""; 

回答

2

由於屬性是@DisplayName,要麼是剛:

[XmlAttribute] 
public string DisplayName = ""; 

,或者更明確:

[XmlAttribute("DisplayName")] 
public string DisplayName = ""; 

(雖然屬性將是可取的到公共領域,國際海事組織)

真正的問題似乎是t他的根名;它在XML文檔的最外層部分,你將需要:

[XmlRoot("MonitorResponseRecord")] 
public class AlarmDefinition {...} 
+0

我應該讓自己升技更加清晰,也有基於一些其它的參數AlarmDefinition類,我已經更新了C#等物品和XML代碼 – DarthSheldon

+0

@DarthSheldon您的答案中的XML不是一個格式良好的文檔;因此不可能說出根源。你可以說得更詳細點嗎?我們無法用你發佈的內容重新制作任何東西,因爲XmlSerializer **將不能與該**一起使用。不過,我關於'[XmlAttribute]'的聲明仍然存在 - 這是適合您數據的適當註釋。 –

+0

我試過[XmlRoot(「MonitorResponseRecord」)]想法,但似乎沒有工作,有什麼我必須添加? – DarthSheldon