2011-05-20 41 views
3

任何人都可以給我一些建議嗎? 一個我諮詢API生成這樣的模式:XML到C#類

<?xml version="1.0"?> 
<ChatXMLResult> 
    <Generator>AppServer.network.lcpdfr.com</Generator> 
    <Version>1000</Version> 
    <Time>1305910998</Time> 
    <Signature>a0f1f6bea66f75de574babd242e68c47</Signature> 
    <FilteredResultSet>1</FilteredResultSet> 
    <Messages> 
     <Message> 
      <ID>1</ID> 
      <UID>9</UID> 
      <DisplayName>Jay</DisplayName> 
      <UserName>jaymac407</UserName> 
      <Time>1305900497</Time> 
      <Area>Masterson St</Area> 
      <Message>Test</Message> 
      <TargettedMessage>false</TargettedMessage> 
      <Targets> 
       <Target>#Global Chat#</Target> 
      </Targets> 
      <Signature>1cfdff1aaa520348d0a62c87ae9717d3</Signature> 
     </Message> 
    </Messages> 
</ChatXMLResult> 

如何,我可以得到的所有消息來自這在C#?

回答

4

Attributes that control XML Serialization,例如:

[XmlRoot("ChatXMLResult")] 
public class Chat 
{ 
    [XmlElement("Signature")] // optional 
    public string Signature { get; set; } 

    [XmlArray] 
    [XmlArrayItem(typeof(Message), ElementName="Message")] 
    public Message[] Messages { get; set; } 
} 

public class Message { .. } 


我也看到了共同的元素,<Signature />,從而可以引入一個父類:

public abstract class SignedObject 
{ 
    public string Signature { get; set; } 
} 
+0

非常感謝您的幫助。 – 2011-05-20 17:24:35

+0

@Rt:很高興幫助! :) – abatishchev 2011-05-20 17:26:35

4

您可以使用Linq to XML將xml加載到匿名對象中,或者可以創建一個要加載值的對象。

var doc = XDocument.Parse(xml); 

var messages = from m in doc.Descendants("Message") 
    select new { 
     ID = (string)m.Element("ID"), 
     UID = (string)m.Element("UID"), 
     DisplayName = (string)m.Element("DisplayName"), 
     // etc 
     Signature = (string)m.Element("Signature") 
    }; 
+0

也可以給這個去,歡呼聲。 – 2011-05-20 17:24:55