Разбор Mac XML PList во что-то читаемое

Я пытаюсь извлечь данные из файлов XML PList ( Apple System Profiler ) и прочитать их в базе данных памяти. , и, наконец, я хочу превратить его в нечто удобочитаемое.

Проблема в том, что формат кажется очень трудным для последовательного чтения. Я уже рассмотрел несколько решений, но я еще не нашел решения, которое меня удовлетворило. Мне всегда приходится жестко кодировать множество значений, и в итоге приходится использовать множество операторов if-else / switch .

Формат выглядит следующим образом.


    _system
    
     
      _cpu_type
      Intel Core Duo
     
    

Пример файла здесь .

После прочтения (или во время чтения) я использую внутренний словарь, который я использую для определения типа информация есть. Например, если ключ - cpu_type , я сохраняю информацию соответственно.


Несколько примеров, которые я пробовал ( упрощенный ), чтобы получить информацию.

 XmlTextReader reader = new
 XmlTextReader("C:\\test.spx");

 reader.XmlResolver = null;

 reader.ReadStartElement("plist");

 String key = String.Empty; String str
 = String.Empty;

 Int32 Index = 0;

 while (reader.Read()) {

     if (reader.LocalName == "key")
     {
         Index++;
         key = reader.ReadString();
     }
     else if (reader.LocalName == "string")
     {
         str = reader.ReadString();

         if (key != String.Empty)
         {
             dct.Add(Index, new KeyPair(key, str));
             key = String.Empty;
         }
     } 
}

Или что-то вроде этого.

foreach (var d in xdoc.Root.Elements("plist"))
   dict.Add(d.Element("key").Value,> d.Element("string").Value);

Я нашел фреймворк, который, возможно, смогу изменить здесь .


Еще немного полезной информации

Mac OS X Информация о профайлере системы здесь .

Сценарий Apple, используемый для синтаксического анализа XML-файлов здесь .


Мы будем очень благодарны за любой совет или понимание этого вопроса.

9
задан eandersson 28 July 2013 в 10:13
поделиться