Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何反序列化此xml文件_C#_Xml_Deserialization - Fatal编程技术网

C# 如何反序列化此xml文件

C# 如何反序列化此xml文件,c#,xml,deserialization,C#,Xml,Deserialization,我正在反序列化一个xml文件(我需要按GUID对节点/对象进行排序,然后重新序列化),但我无法正确地反序列化它 我已经创建了类,但是没有正确读取文件。这些类列在第二个代码块中,而且,如果监视的值标记为false,则必须忽略它们,而不是将其写入文件 <?xml version="1.0" encoding="utf-8"?> <EnvironmentNodeConfigurationParameters> <ComplexDeviceParameterLi

我正在反序列化一个xml文件(我需要按GUID对节点/对象进行排序,然后重新序列化),但我无法正确地反序列化它

我已经创建了类,但是没有正确读取文件。这些类列在第二个代码块中,而且,如果监视的值标记为false,则必须忽略它们,而不是将其写入文件

    <?xml version="1.0" encoding="utf-8"?>
<EnvironmentNodeConfigurationParameters>
  <ComplexDeviceParameterList>
    <ComplexNodeConfigurations SubDeviceID="Controller_1" SubDeviceName="Controller_1">
  <ComplexNodeParameterList>
    <NodeConfigurations NodeID="1" NodeName="Temperature" DependNodeName="" RegisterType="HoldingRegs" StartReg="128" NumRegs="1" NodeType="FreezerTemperature" ValueType="System.Double" EnvironmentLinkType="Amtn" Guid="ABAABB1E-CCFE-4BF2-BBFC-90142F1B177A" Enabled="true" Units="Celcius" Monitored="true" ReportItem="10">
      <EnvironmentLinkParams>
        <KeyValuePair Key="IPAddress" Value="192.168.1.250" />
      </EnvironmentLinkParams>
    </NodeConfigurations>
    <NodeConfigurations NodeID="1" NodeName="Temperature_SetPoint" DependNodeName="" RegisterType="HoldingRegs" StartReg="0" NumRegs="1" NodeType="FreezerTemperature" ValueType="System.Double" EnvironmentLinkType="Amtn" Guid="8dcc904e-1484-43d2-8bf1-3dc19f01951d" Enabled="true" Units="Celcius" Monitored="true" ReportItem="20">
      <EnvironmentLinkParams>
        <KeyValuePair Key="IPAddress" Value="192.168.1.250" />
      </EnvironmentLinkParams>
    </NodeConfigurations>
    <NodeConfigurations NodeID="1" NodeName="LowTemp_SetPoint" DependNodeName="" RegisterType="HoldingRegs" StartReg="40" NumRegs="1" NodeType="FreezerTemperature" ValueType="System.Double" EnvironmentLinkType="Amtn" Guid="3d73a245-2766-40ca-b77a-b777af79e215" Enabled="true" Units="Celcius" Monitored="false" ReportItem="20">
      <EnvironmentLinkParams>
        <KeyValuePair Key="IPAddress" Value="192.168.1.250" />
      </EnvironmentLinkParams>
    </NodeConfigurations>
    <NodeConfigurations NodeID="1" NodeName="HighTemp_SetPoint" DependNodeName="" RegisterType="HoldingRegs" StartReg="41" NumRegs="1" NodeType="FreezerTemperature" ValueType="System.Double" EnvironmentLinkType="Amtn" Guid="db4059d4-bb26-467c-9e36-4c755d9a5e98" Enabled="true" Units="Celcius" Monitored="false" ReportItem="20">
      <EnvironmentLinkParams>
        <KeyValuePair Key="IPAddress" Value="192.168.1.250" />
      </EnvironmentLinkParams>
    </NodeConfigurations>
    <NodeConfigurations NodeID="1" NodeName="LowTemp_Alarm" DependNodeName="" RegisterType="HoldingRegs" StartReg="2" NumRegs="1" NodeType="FreezerTemperature" ValueType="System.Double" EnvironmentLinkType="Amtn" Guid="fa11e66b-c269-4790-887d-0ac4bb30541d" Enabled="true" Units="Celcius" Monitored="true" ReportItem="10">
      <EnvironmentLinkParams>
        <KeyValuePair Key="IPAddress" Value="192.168.1.250" />
      </EnvironmentLinkParams>
    </NodeConfigurations>
    <NodeConfigurations NodeID="1" NodeName="HighTemp_Alarm" DependNodeName="" RegisterType="HoldingRegs" StartReg="4" NumRegs="1" NodeType="FreezerTemperature" ValueType="System.Double" EnvironmentLinkType="Amtn" Guid="0e4653bf-e43b-4725-9f00-731d5e356f12" Enabled="true" Units="Celcius" Monitored="true" ReportItem="10">
      <EnvironmentLinkParams>
        <KeyValuePair Key="IPAddress" Value="192.168.1.250" />
      </EnvironmentLinkParams>
    </NodeConfigurations>
    <NodeConfigurations NodeID="1" NodeName="Temp_Offset" DependNodeName="" RegisterType="HoldingRegs" StartReg="9" NumRegs="1" NodeType="FreezerTemperature" ValueType="System.Double" EnvironmentLinkType="Amtn" Guid="1d0c6fa0-6819-4b7e-8145-536954b8bdd7" Enabled="true" Units="Celcius" Monitored="false" ReportItem="10">
      <EnvironmentLinkParams>
        <KeyValuePair Key="IPAddress" Value="192.168.1.250" />
      </EnvironmentLinkParams>
    </NodeConfigurations>
    <NodeConfigurations NodeID="1" NodeName="PV1_Temperature" DependNodeName="" RegisterType="HoldingRegs" StartReg="134" NumRegs="1" NodeType="FreezerTemperature" ValueType="System.Double" EnvironmentLinkType="Amtn" Guid="b921d2a7-997b-4a32-8460-1a63177f1711" Enabled="true" Units="Celcius" Monitored="false" ReportItem="10">
      <EnvironmentLinkParams>
        <KeyValuePair Key="IPAddress" Value="192.168.1.250" />
      </EnvironmentLinkParams>
    </NodeConfigurations>
    <NodeConfigurations NodeID="1" NodeName="Output" DependNodeName="" RegisterType="HoldingRegs" StartReg="130" NumRegs="1" NodeType="FreezerOutput" ValueType="System.Double" EnvironmentLinkType="Amtn" Guid="c87482e3-edb5-46b9-9fdc-8915d49eeb1e" Enabled="true" Units="Percent" Monitored="true" ReportItem="0">
      <EnvironmentLinkParams>
        <KeyValuePair Key="IPAddress" Value="192.168.1.250" />
      </EnvironmentLinkParams>
    </NodeConfigurations>
    <NodeConfigurations NodeID="1" NodeName="Alarm" DependNodeName="" RegisterType="HoldingRegs" StartReg="132" NumRegs="1" NodeType="FreezerStatus" ValueType="System.Int32" EnvironmentLinkType="Amtn" Guid="b59cbbc5-c286-4f6c-ae99-b3a822808fc7" Enabled="true" Units="" Monitored="false" ReportItem="0">
      <EnvironmentLinkParams>
        <KeyValuePair Key="IPAddress" Value="192.168.1.250" />
      </EnvironmentLinkParams>
    </NodeConfigurations>
    <NodeConfigurations NodeID="1" NodeName="Circuit_Alarm" DependNodeName="" RegisterType="HoldingRegs" StartReg="139" NumRegs="1" NodeType="FreezerStatus" ValueType="System.Int32" EnvironmentLinkType="Amtn" Guid="4f90d425-ba0b-401d-b339-795e5411a1f0" Enabled="true" Units="" Monitored="false" ReportItem="0">
      <EnvironmentLinkParams>
        <KeyValuePair Key="IPAddress" Value="192.168.1.250" />
      </EnvironmentLinkParams>
    </NodeConfigurations>
  </ComplexNodeParameterList>
</ComplexNodeConfigurations>
<ComplexNodeConfigurations SubDeviceID="Controller_2" SubDeviceName="Controller_2">
  <ComplexNodeParameterList>
    <NodeConfigurations NodeID="2" NodeName="Temperature" DependNodeName="" RegisterType="HoldingRegs" StartReg="128" NumRegs="1" NodeType="FreezerTemperature" ValueType="System.Double" EnvironmentLinkType="Amtn" Guid="{85F59633-FF15-4FF7-A419-8BF9B7C80FF8}" Enabled="true" Units="Celcius" Monitored="true" ReportItem="10">
      <EnvironmentLinkParams>
        <KeyValuePair Key="IPAddress" Value="192.168.1.250" />
      </EnvironmentLinkParams>
    </NodeConfigurations>
    <NodeConfigurations NodeID="2" NodeName="Temperature_SetPoint" DependNodeName="" RegisterType="HoldingRegs" StartReg="0" NumRegs="1" NodeType="FreezerTemperature" ValueType="System.Double" EnvironmentLinkType="Amtn" Guid="3ed6fee4-8a63-43f4-87be-83f45f81e524" Enabled="true" Units="Celcius" Monitored="true" ReportItem="20">
      <EnvironmentLinkParams>
        <KeyValuePair Key="IPAddress" Value="192.168.1.250" />
      </EnvironmentLinkParams>
    </NodeConfigurations>
    <NodeConfigurations NodeID="2" NodeName="LowTemp_SetPoint" DependNodeName="" RegisterType="HoldingRegs" StartReg="40" NumRegs="1" NodeType="FreezerTemperature" ValueType="System.Double" EnvironmentLinkType="Amtn" Guid="d11a0fbf-b92b-42b4-9423-9be0081c0cdf" Enabled="true" Units="Celcius" Monitored="false" ReportItem="20">
      <EnvironmentLinkParams>
        <KeyValuePair Key="IPAddress" Value="192.168.1.250" />
      </EnvironmentLinkParams>
    </NodeConfigurations>
    <NodeConfigurations NodeID="2" NodeName="HighTemp_SetPoint" DependNodeName="" RegisterType="HoldingRegs" StartReg="41" NumRegs="1" NodeType="FreezerTemperature" ValueType="System.Double" EnvironmentLinkType="Amtn" Guid="4ecc10ff-c189-4e39-971d-dd8e0cbfddf0" Enabled="true" Units="Celcius" Monitored="false" ReportItem="20">
      <EnvironmentLinkParams>
        <KeyValuePair Key="IPAddress" Value="192.168.1.250" />
      </EnvironmentLinkParams>
    </NodeConfigurations>
    <NodeConfigurations NodeID="2" NodeName="LowTemp_Alarm" DependNodeName="" RegisterType="HoldingRegs" StartReg="2" NumRegs="1" NodeType="FreezerTemperature" ValueType="System.Double" EnvironmentLinkType="Amtn" Guid="1d891f0f-1ab0-487d-a5eb-77fe089240e7" Enabled="true" Units="Celcius" Monitored="true" ReportItem="10">
      <EnvironmentLinkParams>
        <KeyValuePair Key="IPAddress" Value="192.168.1.250" />
      </EnvironmentLinkParams>
    </NodeConfigurations>
    <NodeConfigurations NodeID="2" NodeName="HighTemp_Alarm" DependNodeName="" RegisterType="HoldingRegs" StartReg="4" NumRegs="1" NodeType="FreezerTemperature" ValueType="System.Double" EnvironmentLinkType="Amtn" Guid="5d54d839-4d17-43c1-82a8-14c6199b6ab2" Enabled="true" Units="Celcius" Monitored="true" ReportItem="10">
      <EnvironmentLinkParams>
        <KeyValuePair Key="IPAddress" Value="192.168.1.250" />
      </EnvironmentLinkParams>
    </NodeConfigurations>
    <NodeConfigurations NodeID="2" NodeName="Temp_Offset" DependNodeName="" RegisterType="HoldingRegs" StartReg="9" NumRegs="1" NodeType="FreezerTemperature" ValueType="System.Double" EnvironmentLinkType="Amtn" Guid="e6bbe973-9a94-4aeb-b104-7a3460962244" Enabled="true" Units="Celcius" Monitored="false" ReportItem="10">
      <EnvironmentLinkParams>
        <KeyValuePair Key="IPAddress" Value="192.168.1.250" />
      </EnvironmentLinkParams>
    </NodeConfigurations>
    <NodeConfigurations NodeID="2" NodeName="PV1_Temperature" DependNodeName="" RegisterType="HoldingRegs" StartReg="134" NumRegs="1" NodeType="FreezerTemperature" ValueType="System.Double" EnvironmentLinkType="Amtn" Guid="95f03a54-cb4e-48f8-93c5-e6e4ce9a1a4c" Enabled="true" Units="Celcius" Monitored="false" ReportItem="10">
      <EnvironmentLinkParams>
        <KeyValuePair Key="IPAddress" Value="192.168.1.250" />
      </EnvironmentLinkParams>
    </NodeConfigurations>
    <NodeConfigurations NodeID="2" NodeName="Output" DependNodeName="" RegisterType="HoldingRegs" StartReg="130" NumRegs="1" NodeType="FreezerOutput" ValueType="System.Double" EnvironmentLinkType="Amtn" Guid="04802db4-aea9-4787-97c0-3eca56c802b0" Enabled="true" Units="Percent" Monitored="true" ReportItem="0">
      <EnvironmentLinkParams>
        <KeyValuePair Key="IPAddress" Value="192.168.1.250" />
      </EnvironmentLinkParams>
    </NodeConfigurations>
    <NodeConfigurations NodeID="2" NodeName="Alarm" DependNodeName="" RegisterType="HoldingRegs" StartReg="132" NumRegs="1" NodeType="FreezerStatus" ValueType="System.Int32" EnvironmentLinkType="Amtn" Guid="218f7c0a-bb21-49eb-b36a-4c0ed00e1b07" Enabled="true" Units="" Monitored="false" ReportItem="0">
      <EnvironmentLinkParams>
        <KeyValuePair Key="IPAddress" Value="192.168.1.250" />
      </EnvironmentLinkParams>
    </NodeConfigurations>
    <NodeConfigurations NodeID="2" NodeName="Circuit_Alarm" DependNodeName="" RegisterType="HoldingRegs" StartReg="139" NumRegs="1" NodeType="FreezerStatus" ValueType="System.Int32" EnvironmentLinkType="Amtn" Guid="aeb98aec-a688-47d3-afda-3b6bf9bb1a43" Enabled="true" Units="" Monitored="false" ReportItem="0">
      <EnvironmentLinkParams>
        <KeyValuePair Key="IPAddress" Value="192.168.1.250" />
      </EnvironmentLinkParams>
    </NodeConfigurations>
  </ComplexNodeParameterList>
</ComplexNodeConfigurations>
<ComplexNodeConfigurations SubDeviceID="Controller_3" SubDeviceName="Controller_3">
  <ComplexNodeParameterList>
    <NodeConfigurations NodeID="3" NodeName="Temperature" DependNodeName="" RegisterType="HoldingRegs" StartReg="128" NumRegs="1" NodeType="FreezerTemperature" ValueType="System.Double" EnvironmentLinkType="Amtn" Guid="1CD619B5-9E1B-448E-9A5B-7BFF4B480813" Enabled="true" Units="Celcius" Monitored="true" ReportItem="10">
      <EnvironmentLinkParams>
        <KeyValuePair Key="IPAddress" Value="192.168.1.250" />
      </EnvironmentLinkParams>
    </NodeConfigurations>
    <NodeConfigurations NodeID="3" NodeName="Temperature_SetPoint" DependNodeName="" RegisterType="HoldingRegs" StartReg="0" NumRegs="1" NodeType="FreezerTemperature" ValueType="System.Double" EnvironmentLinkType="Amtn" Guid="97ba767c-7dd9-4c74-b3ea-fd40ff48927e" Enabled="true" Units="Celcius" Monitored="true" ReportItem="20">
      <EnvironmentLinkParams>
        <KeyValuePair Key="IPAddress" Value="192.168.1.250" />
      </EnvironmentLinkParams>
    </NodeConfigurations>
    <NodeConfigurations NodeID="3" NodeName="LowTemp_SetPoint" DependNodeName="" RegisterType="HoldingRegs" StartReg="40" NumRegs="1" NodeType="FreezerTemperature" ValueType="System.Double" EnvironmentLinkType="Amtn" Guid="9fa1ae56-7d43-4da9-b481-09a1befee510" Enabled="true" Units="Celcius" Monitored="false" ReportItem="20">
      <EnvironmentLinkParams>
        <KeyValuePair Key="IPAddress" Value="192.168.1.250" />
      </EnvironmentLinkParams>
    </NodeConfigurations>
    <NodeConfigurations NodeID="3" NodeName="HighTemp_SetPoint" DependNodeName="" RegisterType="HoldingRegs" StartReg="41" NumRegs="1" NodeType="FreezerTemperature" ValueType="System.Double" EnvironmentLinkType="Amtn" Guid="7c9b72dc-0150-4dfd-8b72-6f79def6de7d" Enabled="true" Units="Celcius" Monitored="false" ReportItem="20">
      <EnvironmentLinkParams>
        <KeyValuePair Key="IPAddress" Value="192.168.1.250" />
      </EnvironmentLinkParams>
    </NodeConfigurations>
    <NodeConfigurations NodeID="3" NodeName="LowTemp_Alarm" DependNodeName="" RegisterType="HoldingRegs" StartReg="2" NumRegs="1" NodeType="FreezerTemperature" ValueType="System.Double" EnvironmentLinkType="Amtn" Guid="353117b2-dd05-4b67-a8f1-afda5570afc6" Enabled="true" Units="Celcius" Monitored="true" ReportItem="10">
      <EnvironmentLinkParams>
        <KeyValuePair Key="IPAddress" Value="192.168.1.250" />
      </EnvironmentLinkParams>
    </NodeConfigurations>
    <NodeConfigurations NodeID="3" NodeName="HighTemp_Alarm" DependNodeName="" RegisterType="HoldingRegs" StartReg="4" NumRegs="1" NodeType="FreezerTemperature" ValueType="System.Double" EnvironmentLinkType="Amtn" Guid="6a7852a4-9d29-413b-bda2-674176774a7c" Enabled="true" Units="Celcius" Monitored="true" ReportItem="10">
      <EnvironmentLinkParams>
        <KeyValuePair Key="IPAddress" Value="192.168.1.250" />
      </EnvironmentLinkParams>
    </NodeConfigurations>
    <NodeConfigurations NodeID="3" NodeName="Temp_Offset" DependNodeName="" RegisterType="HoldingRegs" StartReg="9" NumRegs="1" NodeType="FreezerTemperature" ValueType="System.Double" EnvironmentLinkType="Amtn" Guid="6660cbd6-ebbb-49cc-a622-dab1df02c263" Enabled="true" Units="Celcius" Monitored="false" ReportItem="10">
      <EnvironmentLinkParams>
        <KeyValuePair Key="IPAddress" Value="192.168.1.250" />
      </EnvironmentLinkParams>
    </NodeConfigurations>
    <NodeConfigurations NodeID="3" NodeName="PV1_Temperature" DependNodeName="" RegisterType="HoldingRegs" StartReg="134" NumRegs="1" NodeType="FreezerTemperature" ValueType="System.Double" EnvironmentLinkType="Amtn" Guid="186445bc-d0d4-4227-87e6-016918be1160" Enabled="true" Units="Celcius" Monitored="false" ReportItem="10">
      <EnvironmentLinkParams>
        <KeyValuePair Key="IPAddress" Value="192.168.1.250" />
      </EnvironmentLinkParams>
    </NodeConfigurations>
    <NodeConfigurations NodeID="3" NodeName="Output" DependNodeName="" RegisterType="HoldingRegs" StartReg="130" NumRegs="1" NodeType="FreezerOutput" ValueType="System.Double" EnvironmentLinkType="Amtn" Guid="b707e3a5-91c1-4c15-9021-e1035d605421" Enabled="true" Units="Percent" Monitored="true" ReportItem="0">
      <EnvironmentLinkParams>
        <KeyValuePair Key="IPAddress" Value="192.168.1.250" />
      </EnvironmentLinkParams>
    </NodeConfigurations>
    <NodeConfigurations NodeID="3" NodeName="Alarm" DependNodeName="" RegisterType="HoldingRegs" StartReg="132" NumRegs="1" NodeType="FreezerStatus" ValueType="System.Int32" EnvironmentLinkType="Amtn" Guid="d27d00ce-6696-4d92-9236-9fae182134b6" Enabled="true" Units="" Monitored="false" ReportItem="0">
      <EnvironmentLinkParams>
        <KeyValuePair Key="IPAddress" Value="192.168.1.250" />
      </EnvironmentLinkParams>
    </NodeConfigurations>
    <NodeConfigurations NodeID="3" NodeName="Circuit_Alarm" DependNodeName="" RegisterType="HoldingRegs" StartReg="139" NumRegs="1" NodeType="FreezerStatus" ValueType="System.Int32" EnvironmentLinkType="Amtn" Guid="4eacd952-3a7f-4b8e-b0d1-6054b1dfd996" Enabled="true" Units="" Monitored="false" ReportItem="0">
      <EnvironmentLinkParams>
        <KeyValuePair Key="IPAddress" Value="192.168.1.250" />
      </EnvironmentLinkParams>
    </NodeConfigurations>
  </ComplexNodeParameterList>
</ComplexNodeConfigurations>

[Serializable()]
[XmlRoot(“环境节点配置参数”)]
公共类环境NodeConfiguration参数
{
[XmlElement(“ComplexDeviceParameterList”)]
ComplexDeviceParameterList cdpl=新的ComplexDeviceParameterList();
}
[可序列化()]
公共类ComplexDeviceParameterList
{
[XmlElement(“ComplexNodeConfiguration”)]
列表cnc=新列表();
}
[可序列化()]
公共类complexNodeConfiguration
{
[XmlElement(“ComplexNodeParameterList”)]
ComplexNodeConfiguration cnc2=新的ComplexNodeConfiguration();
}
[可序列化()]
公共类ComplexNodeParameterList
{
[XmlElement(“节点配置”)]
列表节点列表=新列表();
}
[可序列化()]
公共类节点配置
{
[XmlElement(“环境链接参数”)]
List elplist=新列表();
}
[可序列化()]
公共类环境LinkParams
{
[XmlElement(“KeyValuePair”)]
KeyValuePair kvp=新的KeyValuePair();
}
[可序列化()]
公共类KeyValuePair
{
[XmlElement(“节点配置”)]
列表节点列表=新列表();
[XmlAttribute(“键”)]
公共字符串key=“IPAddress”;
[XmlAttribute(“值”)]
公共字符串值=“192.168.1.250”;
}
我需要代码来获取xml文件,按GUID对其进行反序列化,然后对其重新序列化。

这是我的程序:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Serialization;

namespace ConsoleApplication108
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XmlReader reader = XmlReader.Create(FILENAME);

            XmlSerializer serializer = new XmlSerializer(typeof(EnvironmentNodeConfigurationParameters));
            EnvironmentNodeConfigurationParameters parameters = (EnvironmentNodeConfigurationParameters)serializer.Deserialize(reader);

            List<ComplexNodeConfigurations> cncs = parameters.cdpl.cnc;

            foreach (ComplexNodeConfigurations cnc in cncs)
            {
                List<NodeConfigurations> nodeList = cnc.cnc2.nodeList;

                nodeList = nodeList.OrderBy(x => x.guid).ToList();
            }

        }
    }
    [Serializable()]
    [XmlRoot("EnvironmentNodeConfigurationParameters")]
    public class EnvironmentNodeConfigurationParameters
    {
        [XmlElement("ComplexDeviceParameterList")]
        public ComplexDeviceParameterList cdpl { get; set; }

    }
    [Serializable()]
    public class ComplexDeviceParameterList
    {
        [XmlElement("ComplexNodeConfigurations")]
        public List<ComplexNodeConfigurations> cnc { get; set; }
    }
    [Serializable()]
    public class ComplexNodeConfigurations
    {

        [XmlElement("ComplexNodeParameterList")]
        public ComplexNodeParameterList cnc2 { get; set; }

    }
    [Serializable()]
    public class ComplexNodeParameterList
    {
        [XmlElement("NodeConfigurations")]
        public List<NodeConfigurations> nodeList { get; set; }
    }
    [Serializable()]
    public class NodeConfigurations
    {
        [XmlElement("EnvironmentLinkParams")]
        public List<EnvironmentLinkParams> elplist { get; set; }
        [XmlAttribute("Guid")]
        public string guid { get; set; }

    }
    [Serializable()]
    public class EnvironmentLinkParams
    {
        [XmlElement("KeyValuePair")]
        public KP kvp { get; set; }
    }
    [Serializable()]
    public class KP
    {
        [XmlElement("NodeConfigurations")]
        public List<NodeConfigurations> nodeList { get; set; }
        [XmlAttribute("Key")]
        public string key { get; set; }
        [XmlAttribute("Value")]
        public string value { get; set; }
    }

}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Xml;
使用System.Xml.Serialization;
命名空间控制台应用程序108
{
班级计划
{
常量字符串文件名=@“c:\temp\test.xml”;
静态void Main(字符串[]参数)
{
XmlReader=XmlReader.Create(文件名);
XmlSerializer serializer=新的XmlSerializer(typeof(EnvironmentNodeConfigurationParameters));
EnvironmentNodeConfigurationParameters=(EnvironmentNodeConfigurationParameters)序列化程序。反序列化(读取器);
列表cncs=parameters.cdpl.cnc;
foreach(cncs中的复杂节点配置cnc)
{
列表节点列表=cnc.cnc2.nodeList;
nodeList=nodeList.OrderBy(x=>x.guid.ToList();
}
}
}
[可序列化()]
[XmlRoot(“环境节点配置参数”)]
公共类环境NodeConfiguration参数
{
[XmlElement(“ComplexDeviceParameterList”)]
公共ComplexDeviceParameterList cdpl{get;set;}
}
[可序列化()]
公共类ComplexDeviceParameterList
{
[XmlElement(“ComplexNodeConfiguration”)]
公共列表{get;set;}
}
[可序列化()]
公共类complexNodeConfiguration
{
[XmlElement(“ComplexNodeParameterList”)]
公共ComplexNodeParameterList cnc2{get;set;}
}
[可序列化()]
公共类ComplexNodeParameterList
{
[XmlElement(“节点配置”)]
公共列表节点列表{get;set;}
}
[可序列化()]
公共类节点配置
{
[XmlElement(“环境链接参数”)]
公共列表elplist{get;set;}
[XmlAttribute(“Guid”)]
公共字符串guid{get;set;}
}
[可序列化()]
公共类环境LinkParams
{
[XmlElement(“KeyValuePair”)]
公共KP kvp{get;set;}
}
[可序列化()]
公共类KP
{
[XmlElement(“节点配置”)]
公共列表节点列表{get;set;}
[XmlAttribute(“键”)]
公共字符串密钥{get;set;}
[XmlAttribute(“值”)]
公共字符串值{get;set;}
}
}

类中的对象必须是公共的才能序列化和反序列化。看起来类中还有一些递归需要修复。使用以下行:public ComplexNodeParameterList cnc2=new ComplexNodeParameterList();这确实有帮助,但没有完全解决问题。什么不起作用?我没有检查每个节点。它只是没有反序列化更改KeyValuePair类,这可能会与KP的Net对象相混淆。我认为这是类的问题。您能帮我解决这些问题吗?有没有办法将排序功能(按GUID)也实现到这一点?对不起,我对C很不好#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Serialization;

namespace ConsoleApplication108
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XmlReader reader = XmlReader.Create(FILENAME);

            XmlSerializer serializer = new XmlSerializer(typeof(EnvironmentNodeConfigurationParameters));
            EnvironmentNodeConfigurationParameters parameters = (EnvironmentNodeConfigurationParameters)serializer.Deserialize(reader);

            List<ComplexNodeConfigurations> cncs = parameters.cdpl.cnc;

            foreach (ComplexNodeConfigurations cnc in cncs)
            {
                List<NodeConfigurations> nodeList = cnc.cnc2.nodeList;

                nodeList = nodeList.OrderBy(x => x.guid).ToList();
            }

        }
    }
    [Serializable()]
    [XmlRoot("EnvironmentNodeConfigurationParameters")]
    public class EnvironmentNodeConfigurationParameters
    {
        [XmlElement("ComplexDeviceParameterList")]
        public ComplexDeviceParameterList cdpl { get; set; }

    }
    [Serializable()]
    public class ComplexDeviceParameterList
    {
        [XmlElement("ComplexNodeConfigurations")]
        public List<ComplexNodeConfigurations> cnc { get; set; }
    }
    [Serializable()]
    public class ComplexNodeConfigurations
    {

        [XmlElement("ComplexNodeParameterList")]
        public ComplexNodeParameterList cnc2 { get; set; }

    }
    [Serializable()]
    public class ComplexNodeParameterList
    {
        [XmlElement("NodeConfigurations")]
        public List<NodeConfigurations> nodeList { get; set; }
    }
    [Serializable()]
    public class NodeConfigurations
    {
        [XmlElement("EnvironmentLinkParams")]
        public List<EnvironmentLinkParams> elplist { get; set; }
        [XmlAttribute("Guid")]
        public string guid { get; set; }

    }
    [Serializable()]
    public class EnvironmentLinkParams
    {
        [XmlElement("KeyValuePair")]
        public KP kvp { get; set; }
    }
    [Serializable()]
    public class KP
    {
        [XmlElement("NodeConfigurations")]
        public List<NodeConfigurations> nodeList { get; set; }
        [XmlAttribute("Key")]
        public string key { get; set; }
        [XmlAttribute("Value")]
        public string value { get; set; }
    }

}