在 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 关闭缓慢

在 Visual Studio 2005 C++ 中设置文件版本号

未安装C#的 visual studio 语言支持。代码编辑intellisense 将不可用。

用 Visual Studio 2005 编译 C 程序?