C# 如何将XML反序列化器配置为拾取属性?

C# 如何将XML反序列化器配置为拾取属性?,c#,xml,xml-serialization,xml-deserialization,C#,Xml,Xml Serialization,Xml Deserialization,可能重复: 我正在反序列化以下XML: <root> <foo> some content </foo> <bar id="someId">someContent</bar> </root> 但是,这不会在条标记中拾取someId。我需要做什么改变才能把它也捡起来 我试过这个: 在上面的类中,我将第二个属性更改为: [XmlElementAttribute("bar")] public Bar bar { get

可能重复:

我正在反序列化以下XML:

<root>
  <foo> some content </foo>
  <bar id="someId">someContent</bar>
</root>
但是,这不会在
标记中拾取
someId
。我需要做什么改变才能把它也捡起来

我试过这个:

在上面的类中,我将第二个属性更改为:

[XmlElementAttribute("bar")]
public Bar bar { get; set; } 
然后定义了一个新类:

[XmlTypeAttribute]
    public class Bar
    {
        [XmlAttribute("id")]
        public string id { get; set; }

        [XmlText]
        public string Value { get; set; }
    }

这仍然会拾取值,但不会拾取
Id

尝试使用不带(“Id”)的XmlAttribute来修复它。

尝试使用不带(“Id”)的XmlAttribute来修复它。

我认为您必须使“bar”对象成为字符串以外的对象,因为拥有一个属性对字符串没有意义。你尝试过没有(“id”)的XmlAttribute吗?同样的问题:@Steve:我刚刚尝试过。它还是不会摘up@Steve:将其更改为
xmldattribute
确实修复了它。我没有立即意识到这一点的原因是因为我的代码中有另一个bug。如果你把它作为答案发布,我会接受它。我认为你必须让你的“bar”对象成为字符串以外的对象,因为有属性对字符串没有意义。你有没有尝试过没有(“id”)的XmlAttribute?同样的问题:@Steve:我刚刚做了。它还是不会摘up@Steve:将其更改为
xmldattribute
确实修复了它。我没有立即意识到这一点的原因是因为我的代码中有另一个bug。如果你把它作为答案贴出来,我会接受的
[XmlTypeAttribute]
    public class Bar
    {
        [XmlAttribute("id")]
        public string id { get; set; }

        [XmlText]
        public string Value { get; set; }
    }