2016-09-08 3 views
1

У меня есть файл XML, содержащий идентификаторы, которые я хотел бы получить, XML, выглядетьDeserialize XML, содержащий словарь

<Dictionary 
    x:TypeArguments="x:String, x:Object" 
    xmlns="clr-namespace:System.Collections.Generic;assembly=mscorlib" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
>  
    <List x:TypeArguments="x:Int32" x:Key="key" Capacity="4">  
    <x:Int32>60371408</x:Int32>  
    <x:Int32>60371409</x:Int32> 
    </List> 
</Dictionary> 

идентификаторам, которые я хочу получить это 60371408, 60371409

ответ

1

Я только что нашел решение: enter image description here

Благодарим за вашу реакцию: D

0

Создать XmlSerializer :

var serializer = new XmlSerializer(typeof(Dictionary<string, object>)); 

... а затем десериализовать. Вы не указали, в какой форме находится этот XML, например, есть ли строка или поток. Вот как вы десериализации XML строку:

var reader = new StringReader(xml); 
var dict = serializer.Deserialize(reader); 

Теперь у вас есть Dictionary<string, object>, но так как значения простые объекты, вам нужно отливать значения:

var list = (List<int>)dict["key"]; 
+0

Привет, Якоб, благодарю вас за вашу реактивность, но у меня есть проблема, когда пытайтесь ввести в действие xmlserializer с помощью словаря: System.Collections.Generic.Dictionary type не поддерживается, потому что он реализует IDictionary. – user3764415

0

Try XML LINQ

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

namespace ConsoleApplication1 
{ 
    public class Program 
    { 
     const string FILENAME = @"c:\temp\test.xml"; 
     public static void Main() 
     { 
      XDocument doc = XDocument.Load(FILENAME); 

      XElement dictionary = doc.Descendants().Where(x => x.Name.LocalName == "Dictionary").FirstOrDefault(); 
      XNamespace xNs = dictionary.GetNamespaceOfPrefix("x"); 

      var results = dictionary.Descendants(xNs + "Int32").Select(x => (int)x).ToList(); 

     } 

    } 
} 
Смежные вопросы