2012-12-14 64 views
0

我在嘗試使用XML提要並將其轉換爲模型。如何正確建模具有屬性的XML節點?

一些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; 

回答

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; 
+0

呀,這個工程。我希望不必使用'.value',但現在我會解決這個問題。 –

+1

@ChaseFlorell如果你不想調用'.Value',那麼你總是可以覆蓋'.ToString()'並返回'Value',這意味着你可以調用'someItem.Guid'。 – James

相關問題