【发布时间】:2011-11-25 08:27:16
【问题描述】:
我正在反序列化以下 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