Trouver tous les nœud enfant de valeur spécifique en C#
<main>
<myself>
<pid>1</pid>
<name>abc</name>
</myself>
<myself>
<pid>2</pid>
<name>efg</name>
</myself>
</main>
c'est mon fichier XML nommé simpan. J'ai deux bouton. suivant et précédent. Ce que je veux faire est, toutes les infos seront exhibe sur la zone de texte lorsque l'utilisateur clique sur le bouton. La recherche nœud sera basé sur le pid.
Bouton suivant en ajoutant 1 de la valeur de pid (disons pid=2) et la recherche sur le nœud qui ont la même valeur de pid=2. il montrera également le nom de la pid=2. (montrant le nom=abc)
En va de même pour le bouton précédent où il permettra de réduire 1value de pid (pid=1).
Quelqu'un sait comment faire cela?
//-------------MODIFIER------------------
grâce à L. B, im essayant d'utiliser son code. cependant j'ai une erreur.
est mon implémentation du code correct?
private void previousList_Click(object sender, EventArgs e)
{
pid = 14;
XDocument xDoc = XDocument.Parse("C:\\Users\\HDAdmin\\Documents\\Fatty\\SliceEngine\\SliceEngine\\bin\\Debug\\simpan.xml");
var name = xDoc.Descendants("myself")
.First(m => (int)m.Element("PatientID") == pid)
.Value;
textETA.Text = name;
////////////////////
}
- Mettre l'accent circonflexe sur
XDocument.Parse
et appuyez sur F1 puis de lire les documents, en particulier la description de l'argument. - Appel XDocument.Parse() avec une chaîne de caractères XML, utilisez XDocument.Load() avec un nom de fichier.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser les éléments suivants
XPath
à la liste de tousMyself
balises, puis chercher ce que vous voulez l'aide d'un simpleLinq
commande:Appelez-moi vieux jeu, mais vous pouvez utiliser un XPath, par exemple:
Si elle peut correspondre à plusieurs nœuds, par exemple, il pourrait y avoir plusieurs
<myself>
éléments avec un élément enfant<pid>
2, utilisez la commande suivante à la place:Dans les deux cas, la valeur peut être extraite à partir de la XmlNode à l'aide de la Valeur propriété.
Initialiser un statique
itemIndex
à 1 et l'utiliser plus commeitemIndex++
(pour le Lendemain) etitemIndex--
(pour le Précédent).XDocument.Parse()
et analyse du fichier chemin d'accès, c'est pourquoi U obtenir cette erreur. Pour obtenir xDoc à partir d'un fichier U devrait utiliserXDocument.Load()
. Je n'ai pas vérifier la mise en œuvre de la requête, je viens de vous expliquer pourquoi vous obtenez l'erreur U a demandé.using System.Globalization;
XmlDocument doc = new XmlDocument();
FileStream fs = new FileStream(rootXMLPath, FileMode.Open, FileAccess.Read);
doc.Load(fs);
XmlNode node = doc.DocumentElement;
nodeName = "/main/myself";
var child1 = node.SelectSingleNode(nodeName).ChildNodes[0].FirstChild.InnerXml;
var child2 = node.SelectSingleNode(nodeName).ChildNodes[0].LastChild.InnerXml;
var child3 = node.SelectSingleNode(nodeName).ChildNodes[1].FirstChild.InnerXml;
var child4 = node.SelectSingleNode(nodeName).ChildNodes[1].LastChild.InnerXml;