2009-11-01 4 views
1

Je suivant (exemple) de mon document xml:Recherche de texte de noeud XML et en utilisant son 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> 

Avec plus de données dans chaque personne. Ce que je veux faire est dans le formulaire d'application AC# Windows, cliquez sur un bouton qui va chercher le champ 'FullName' que l'utilisateur a sélectionné, et obtenir l'ID de cette entrée de l'utilisateur, afin que je puisse utiliser cet ID pour remplir forme. IE: L'utilisateur sélectionne 'John Smith' et appuie sur 'Go'. Cela remplira les champs du formulaire avec les données de John Smith. Donc je pense à 2 choses, en utilisant 'SelectSingleNode'? pour obtenir le texte du nœud FullName, puis en quelque sorte d'obtenir l'ID des utilisateurs? Le reste de mon code utilise des appels XmlDocument.

C'est ce que j'ai jusqu'à présent:

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

Cela semble y arriver? XmlDocument fullnamefinderdoc = new XmlDocument(); fullnamefinderdoc.Load ("Data.xml"); XmlNode node = fullnamefinderdoc.SelectSingleNode ("// Nom complet"); –

+0

Voir ma mise à jour –

+0

'SelectSingleNode (" // [FullName = 'FullName'] ");' va chercher un appel étudiant "FullName" ... évidemment, vous n'avez pas un tel étudiant ... –

Répondre

2

Que diriez-vous ceci:

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

Cela devrait trouver le nœud étudiant pour « fullName », et extraire la représentation de chaîne de la « ID "Attribut, que vous pouvez ensuite convertir en un GUID en C#.

À partir de votre code, avec appel est:

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

Marc

+0

Cela ne semble pas fonctionner: string FullName = StudentSelectStudentComboBox.Text; XmlDocument fullnamefinderdoc = new XmlDocument(); fullnamefinderdoc.Load ("Data.xml"); XmlNode nœud = fullnamefinderdoc.SelectSingleNode ("// [FullName = 'FullName']"); if (node! = Null) {string studentID = node.Attributes ["ID"]. Valeur; } MessageBox.Show (ID_étudiant); –

+0

Désolé, où devrais-je les mettre afin qu'ils puissent être formatés correctement? –

+1

Je les ai mis dans la question originale. :) –

Questions connexes