Найти в XML и читать только эту часть - PullRequest
0 голосов
/ 11 декабря 2011

У меня есть XML-файл с некоторой информацией для входа в систему, который мне нужен для поиска имени для входа и поиска соответствующих данных для учетной записи.

У меня есть XML-файл:

<?xml version="1.0" encoding="UTF-8"?>
<!--GroupTool2 bot settings file-->
<!--Please do not make any manual changes to this file!-->
<GroupTool2_Settings>
  <SavedBots>
    <BotName>Midday Ibor</BotName>
    <BotPass>Password Hash</BotPass>
    <BotMaster>Master Trapper</BotMaster>
    <BotGroup>MyGroup</BotGroup>
    <StartLocation>@Home/</StartLocation>
    <DontSend>1</DontSend>
    <DaysBetweenInvited>11</DaysBetweenInvited>
  </SavedBots>
  <SavedBots>
    ...
  </SavedBots>
</GroupTool2_Settings>

Что мне нужно сделать, так это уметь искать в документе имя BotName и читать только те данные, которые относятся к тому имени BotName, которое я ищу.

Но при этом возникают проблемыпуть.BotName не всегда сохраняется как «FirstName LastName», оно также может храниться как «FirstName» и «FirstName.LastName»

Переменные, которые я всегда буду иметь для поиска, однако ВСЕГДА являются строкойBotFName и BotLname.В тех случаях, когда сохраненное имя BotName является только FirstName, используемое LastName всегда будет определенным именем, поэтому LastName можно просто отбросить, когда дело доходит до поиска имени в документе.

Я такжене автор рассматриваемого XML-документа, поэтому его нельзя изменить, чтобы упростить мой поиск.

Однако я не ищу полное решение, просто короткий псевдо-пример, поэтому я знаю, с чего начать.Любая помощь приветствуется.

/ Рикард

1 Ответ

1 голос
/ 11 декабря 2011

Вы можете искать элемент через Linq-XML.

 XDocument doc = XDocument.Load(file);
 string search="Midday Ibor";
 var savedBots = doc.Descendants("SavedBots").Where(p => p.Element("BotName").Value == search).FirstOrDefault();

 if (savedBots != null)
  {
   Console.WriteLine((string)savedBots.Element("BotPass"));
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...