【问题标题】:How can XML Deserializer be configured to pick up an attribute? [duplicate]如何配置 XML 反序列化器以获取属性? [复制]
【发布时间】:2011-11-25 08:27:16
【问题描述】:

可能重复:
Deserializing XML, how do I access attributes?

我正在反序列化以下 XML:

<root>
  <foo> some content </foo>
  <bar id="someId">someContent</bar>
</root>

使用XMLSerializer进入下面的类对象。

[XmlRootAttribute("foobar")]
public class foobar
{

    [XmlElementAttribute("foo")]
    public string foo { get; set; }

    [XmlElementAttribute("bar")]
    public string bar { get; set; }        

}

但是,这不会在 bar 标记中提取 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

【问题讨论】:

  • 我认为你必须让你的'bar'对象不是一个字符串,因为拥有一个属性对于一个字符串没有意义。
  • 你试过没有 ("id") 的 XmlAttribute 吗?
  • @Steve:我刚刚做到了。它仍然不会捡起它
  • @Steve:将其更改为XmlAttribute 确实修复了它。我没有立即意识到这一点的原因是我的代码中存在另一个错误。如果您将其发布为答案,我会接受它

标签: c# xml xml-serialization xml-deserialization


【解决方案1】:

尝试使用不带 ("id") 的 XmlAttribute 来修复它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    相关资源
    最近更新 更多