如何使用Attributes正确建模XML节点?

时间:2012-12-14 19:13:11

标签: c# model xml-serialization

我正在尝试使用XML Feed并将其转换为模型。

有些XML看起来像这样。

<guid isPermaLink="false">
    http://example.com/foo/bar
</guid>

在尝试对此进行建模时,我正在使用

[XmlElement("guid")]
public string Guid { get; set; }

[XmlElement("guid")]
public m_Guid Guid { get; set; }
public class m_Guid
{
    [XmlAttribute("isPermaLink")]
    public bool isPermaLink { get; set; }
}

但显然VS正在抛出错误

  

此成员定义不止一次。

我只是想弄清楚如何对此进行建模,以便在最后,我可以使用

var theGuid = someItem.Guid;
var guidIsPermaLink = someItem.Guid.isPermaLink;

希望有人可以帮助我指出正确的方向。我对这种建模有点新意。


这是混淆标记的另一个例子,需要以类似的方式建模。

<link>http://example.com/foo/bar/</link>
<atom:link rel="self" type="application/rss+xml" href="http://example.com/foo/bar/&format=rss"/>

需要建模,以便我们可以做到这一点

var link = someItem.Link;
var linkType = someItem.Link.type;
var linkHref = someItem.Link.href;

1 个答案:

答案 0 :(得分:0)

你可以这样建模:

public class Guid 
{
    [XmlAttribute]
    public bool IsPermaLink { get; set; }

    // and the element value
    [XmlTextAttribute]
    public string Value;
}

public class Item
{
    [XmlElement]
    public Guid Guid { get; set; }
}
...
var theGuid = someItem.Guid.Value;
var guidIsPermaLink = someItem.Guid.IsPermaLink;