【问题标题】:XML to C# classXML 到 C# 类
【发布时间】:2011-08-29 20:10:57
【问题描述】:

谁能给我一些建议? 我正在咨询的 API 会生成这样的模式:

<?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# 中获取所有消息?

【问题讨论】:

    标签: c# .net xml serialization xml-serialization


    【解决方案1】:

    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 { .. }
    


    我也看到了共同的元素,&lt;Signature /&gt;,因此你可以引入一个父类:

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

    【讨论】:

    • 非常感谢您的帮助。
    【解决方案2】:

    您可以使用 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")
        };
    

    【讨论】:

      【解决方案3】:
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-01
      • 2012-01-01
      • 2020-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多