2012-05-31 2 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

я должен был бы сделать сам ABIT более ясно, есть ли другие элементы в классе AlarmDefinition на основе некоторых других параметров, я обновил C# и коды XML – DarthSheldon

+0

@ DarthSheldon xml в вашем ответе не является хорошо сформированным документом; поэтому невозможно сказать, что такое корень. Можете быть более конкретными? мы не можем воспроизвести что-либо с тем, что вы опубликовали, поскольку XmlSerializer ** не будет работать с этим **. Однако мое утверждение о '[XmlAttribute]' все еще стоит - это соответствующая аннотация, соответствующая вашим данным. –

+0

Я попробовал [XmlRoot («MonitorResponseRecord»)] Идею, но она, похоже, не работает, есть ли что-то еще, что я должен добавить? – DarthSheldon

Смежные вопросы