将xml字符串转换为C#对象

时间:2018-06-18 14:06:40

标签: c# xml

以下是我的XML代码。

<programs>
<program>
    <ProgrameName>Test</ProgrameName>
    <deviceTypes>
        <DeviceType>POS</DeviceType>
        <deviceTargets>
            <DeviceNames>
                <DeviceName>POS0001</DeviceName>
                <DeviceName>POS0001</DeviceName>
                <DeviceName>POS0001</DeviceName>
            </DeviceNames>  
            <AttemptToIstall>True</AttemptToIstall>
            <Mandetory>False</Mandetory>
            <SkipIfOffline>False</SkipIfOffline>
        </deviceTargets>
        <AttemptToIstall>True</AttemptToIstall>
        <Mandatory>False</Mandatory>
        <SkipIfOffline>False</SkipIfOffline>
    </deviceTypes>      
</program>

请帮我用XmlSerializer编写C#代码。我想根据上面的XML创建一个对象并序列化这些对象。

下面是我的C#课程。

 public class ProgramP
{
    public string ProgrameName { get; set; }
    [XmlRoot("")]
    public class DeviceTypes
    {
        public string DeviceType { get; set; }
        [XmlRoot("")]
        public class DeviceTargets
        {
            public string DeviceNames { get; set; }
            public string AttemptToIstall { get; set; }
            public string Mandetory { get; set; }
            public string SkipIfOffline { get; set; }
        }
        [XmlElement("DeviceTargets")]
        public DeviceTargets[] ArDeviceTargets { get; set; }
        public string AttemptToIstall { get; set; }
        public string Mandetory { get; set; }
        public string SkipIfOffline { get; set; }

    }
    [XmlElement("DeviceTypes")]
    public DeviceTypes[] ArDeviceType { get; set; }
}

下面是我的C#code.can任何正文请指正或建议我在哪里添加更多课程或如何安排我的课程以便我可以将XML作为输出。

public void ExportClass(string strFilePathExportedXML)
    {
        ProgramP ProgramP = new ProgramP
        {
            ProgrameName = "Test",
            ArDeviceType = new ProgramP.DeviceTypes[] {
            new ProgramP.DeviceTypes {
                DeviceType = "POS1",
                  AttemptToIstall="True",
                            Mandetory="True",
                            SkipIfOffline="True",
                ArDeviceTargets = new ProgramP.DeviceTypes.DeviceTargets[] {
                    new ProgramP.DeviceTypes.DeviceTargets {
                        DeviceNames="POS01",
                        AttemptToIstall="True",
                        Mandetory="True",
                        SkipIfOffline="True"
                    },
                     new ProgramP.DeviceTypes.DeviceTargets {
                         DeviceNames="POS02",
                        AttemptToIstall="True",
                        Mandetory="True",
                        SkipIfOffline="True"
                    }
                }               
        };


 TextWriter writer = new StreamWriter(strFilePathExportedXML);
        XmlSerializer serializerOut = new XmlSerializer(typeof(ProgramP));
        serializerOut.Serialize(writer, ProgramP);
        writer.Close();

1 个答案:

答案 0 :(得分:0)

映射后,您可以使用:

public static YourClass LoadFromXMLString(string xmlText)
{
    var stringReader = new System.IO.StringReader(xmlText);
    var serializer = new XmlSerializer(typeof(YourClass ));
    return serializer.Deserialize(stringReader) as YourClass ;
}

从这个主题:Convert Xml to Object