0

私のクラスは IXmlSerializable を実装しており、次のようなプロパティがあります。

    public List<KeyValuePair<int, bool>> exportList
    {
        get { return _exportList; } 
        set { _exportList = value; }
    }

XML ドキュメントがあり、リストにエントリを入力する必要があります

public void ReadXml(XmlReader reader)
{
}

私の XML ドキュメントは次のようになります。

<Object msdata:InstanceType="CYNOX_Datenlogger_Software.Geräte.Slave, CYNOX_Datenlogger_Software, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" Name="Device 4" ID="4" IDParent="3" PrimeAddress="0" SecondaryAdd="10520089" AdditionalInfo="" Locked="False" StandAlone="True" ManuID="ELS" csvPath="" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
  <KeyValuePairThatSerializesProperlyOfInt32Boolean xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Value>false</Value>
    <Key>0</Key>
  </KeyValuePairThatSerializesProperlyOfInt32Boolean>
  <KeyValuePairThatSerializesProperlyOfInt32Boolean xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Value>true</Value>
    <Key>1</Key>
  </KeyValuePairThatSerializesProperlyOfInt32Boolean>
  <KeyValuePairThatSerializesProperlyOfInt32Boolean xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Value>true</Value>
    <Key>2</Key>
  </KeyValuePairThatSerializesProperlyOfInt32Boolean>
  <KeyValuePairThatSerializesProperlyOfInt32Boolean xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Value>false</Value>
    <Key>3</Key>
  </KeyValuePairThatSerializesProperlyOfInt32Boolean>
  <KeyValuePairThatSerializesProperlyOfInt32Boolean xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Value>false</Value>
    <Key>4</Key>
  </KeyValuePairThatSerializesProperlyOfInt32Boolean>
  <KeyValuePairThatSerializesProperlyOfInt32Boolean xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Value>false</Value>
    <Key>5</Key>
  </KeyValuePairThatSerializesProperlyOfInt32Boolean>
  <KeyValuePairThatSerializesProperlyOfInt32Boolean xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Value>false</Value>
    <Key>6</Key>
  </KeyValuePairThatSerializesProperlyOfInt32Boolean>
  <KeyValuePairThatSerializesProperlyOfInt32Boolean xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Value>false</Value>
    <Key>7</Key>
  </KeyValuePairThatSerializesProperlyOfInt32Boolean>
  <KeyValuePairThatSerializesProperlyOfInt32Boolean xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Value>false</Value>
    <Key>8</Key>
  </KeyValuePairThatSerializesProperlyOfInt32Boolean>
</Object>

どうすればこれを達成できますか?

4

1 に答える 1

2

LINQ to XML を少し利用できます。

public void ReadXml(XmlReader reader)
{
    var document = XDocument.Load(reader);
    this._exportList = document
        .Descendants("KeyValuePairThatSerializesProperlyOfInt32Boolean")
        .Select(e => new KeyValuePair<int, bool>(
            Int32.Parse(e.Element("Key").Value),
            Boolean.Parse(e.Element("Value").Value)
        )).ToList();

}
于 2012-01-11T09:53:07.713 に答える