2009-11-01 3 views
1

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

<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); 
+0

Это, кажется, попасть туда? XmlDocument fullnamefinderdoc = new XmlDocument(); fullnamefinderdoc.Load ("Data.xml"); XmlNode node = fullnamefinderdoc.SelectSingleNode ("// FullName"); –

+0

Просмотреть мое обновленное сообщение –

+0

'SelectSingleNode (" // [FullName = 'FullName'] ");' это будет поиск студенческого вызова «FullName» ... очевидно, у вас нет такого ученика ... –

ответ

2

Как об этом:

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); 
} 

Марк

+0

Это, похоже, не работает: string FullName = StudentSelectStudentComboBox.Text; XmlDocument fullnamefinderdoc = новый XmlDocument(); fullnamefinderdoc.Load ("Data.xml"); XmlNode node = fullnamefinderdoc.SelectSingleNode ("// [FullName = 'FullName']"); if (node! = Null) {string studentID = node.Attributes ["ID"]. } MessageBox.Show (studentID); –

+0

Извините, где я должен положить их, чтобы они могли быть отформатированы правильно? –

+1

Я поставил их в исходный вопрос. :) –

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