Поиск текста узла XML и использование его идентификатора - PullRequest
1 голос
/ 02 ноября 2009

У меня есть следующий (пример) моего xml документа:

<Students>
    <Student ID = *GUID NUMBER*>
    <FullName>John Smith</FullName>
    <Address>123 Fake St</Address>
    </Student>
    <Student ID = *GUID NUMBER*>
    <FullName>Henry Doe</FullName>
    <Address>321 Whatever Lane</Address>

С большим количеством данных в каждом человеке. Я хочу сделать это в форме приложения ac # windows, нажать кнопку, которая будет искать поле «FullName», выбранное пользователем, и получить идентификатор этой записи пользователя, чтобы я мог использовать этот идентификатор для форма. IE: пользователь выбирает «John Smith» и нажимает «Go». Это заполнит поля формы данными Джона Смита. Итак, я думаю о 2 вещах, используя «SelectSingleNode»? получить текст узла FullName, а затем каким-то образом получить идентификатор пользователя? Остальная часть моего кода использует вызовы XmlDocument.

Это то, что я имею до сих пор:

string FullName = StudentSelectStudentComboBox.Text;
XmlDocument fullnamefinderdoc = new XmlDocument();
fullnamefinderdoc.Load("Data.xml");
XmlNode node = fullnamefinderdoc.SelectSingleNode("//[FullName='FullName']");
if (node != null)
{ string studentID = node.Attributes["ID"].Value; }
MessageBox.Show("Student ID is: " + studentID);

1 Ответ

2 голосов
/ 02 ноября 2009

Как насчет этого:

public string FindStudentID(string fullName)
{
   string result = string.Empty;

   XmlDocument doc = new XmlDocument();
   doc.Load(@"your-xml-file-name.xml");

   string xpath = string.Format("/Students/Student[FullName='{0}']", fullName);
   XmlNode node = doc.SelectSingleNode(xpath);

   if (node != null)  // we found John Smith
   {
      result = node.Attributes["ID"].Value;
   }

   return result;
}

Это должно найти узел студента для «fullName» и извлечь строковое представление атрибута «ID», который затем можно привести к GUID в C #.

Из вашего кода звоните с:

private void StudentGoButton_Click(object sender, EventArgs e) 
{
    string myStudentID = FindStudentID(StudentSelectStudentComboBox.Text);
}

Марк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...