Я пытаюсь извлечь данные из файлов 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-файлов здесь .
Мы будем очень благодарны за любой совет или понимание этого вопроса.