在 C# visual2005 中使用 XmlAttribute() 检索
Posted
技术标签:
【中文标题】在 C# visual2005 中使用 XmlAttribute() 检索【英文标题】:use of XmlAttribute() to retrieve in C# visual2005 【发布时间】:2012-05-31 20:11:29 【问题描述】:我正在尝试做一些事情,这可能非常简单,所以请多多包涵,我只想将 XML 文件中的属性转换为我的 C# 代码中的字符串。这是我所拥有的:
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 = "";
【问题讨论】:
【参考方案1】:因为属性是@DisplayName
,所以要么就是:
[XmlAttribute]
public string DisplayName = "";
或者,更明确地说:
[XmlAttribute("DisplayName")]
public string DisplayName = "";
(虽然属性比公共字段更可取,IMO)
真正的问题似乎是根名称;它是 xml 文档的最外层,您需要:
[XmlRoot("MonitorResponseRecord")]
public class AlarmDefinition ...
【讨论】:
我应该让自己更清楚一点,AlarmDefinition 类中还有其他项目基于其他一些参数,我已经更新了 C# 和 XML 代码 @DarthSheldon 您答案中的 xml 不是格式正确的文档;因此不可能说什么是根。你可以说得更详细点吗?我们无法使用您发布的内容复制任何内容,因为 XmlSerializer 无法使用它。但是,我关于[XmlAttribute]
的声明仍然有效 - 这是适合您数据的适当注释。
我尝试了 [XmlRoot("MonitorResponseRecord")] 的想法,但它似乎不起作用,还有什么我必须添加的吗??以上是关于在 C# visual2005 中使用 XmlAttribute() 检索的主要内容,如果未能解决你的问题,请参考以下文章
将 DataTable 传递给非托管环境(visual c# 2005)
关于c# visual studio 2005 关于datetimepicker,日期问题
在 Visual Studio 2005 C++ 中设置文件版本号