J'essaie de lire un xml fichier que je veux faire pour ma mère. Donc, fondamentalement c'est ce que je veux faire:
Combobox code> qui affichera tous les noms de légumes dans le XML. LI>
- Après avoir sélectionné un légume, le deuxième
Combobox code> affichera les noms de recette dans le XML pouvant utiliser le légume sélectionné dans le premier Combobox code> pour la cuisson. LI>
- Enfin, avec un bouton OK code> code>, la recette sélectionnée lira le chemin de fichier qui mène à la recette. LI>
ol>
xml j'ai écrit h1> xxx pré> code h1> xxx pré> le premier comboBox Code> est maintenant capable d'afficher les noms de légumes, mais comment faire le 2e comboBox code> pour lire les recettes? p> p>
3 Réponses :
Votre XML doit être restructuré, car vous mélangez des données lors de la mise en place de noms de recette et de nœud de chemin de fichier comme valeur du nœud de recette
Voici une meilleure approche: P>
<Vegetables>
<vegetable name="Carrot">
<recipe name="ABCrecipe">
<FilePath>C:\\</FilePath>
</recipe>
<recipe name="DEFrecipe">
<FilePath>D:\\</FilePath>
</recipe>
</vegetable>
<vegetable name="Potato">
<recipe name="CBArecipe">
<FilePath>E:\\</FilePath>
</recipe>
<recipe name="FEDrecipe">
<FilePath>F:\\</FilePath>
</recipe>
</vegetable>
</Vegetables>
La même restructuration est nécessaire pour tirer les noms de légumes dans les attributs / nœuds. Un élément XML peut contenir un texte ou i> un ou plusieurs sous-éléments; Il ne peut pas contenir les deux.
@Phylogenèse Vous pouvez avoir des éléments contenant à la fois du texte et d'autres éléments. Ceci est appelé contenu mixte i>. Un bon exemple de ceci est xhtml, où bonjour mr x span> p> code> est valide xml.
@Tragedian Vous avez raison - mais dans ce cas, le contenu mixte fait pour une structure terrible.
Le contenu mixte est entièrement valide comme @tragedian dit, mais j'extraînerais effectivement le nom du légume. Désolé ça a glissé. Je vais le corriger
Si vous voulez pouvoir obtenir le nom d'un légume du document, la chose la plus facile à faire est de le définir comme son propre morceau de données séparé. Il n'y a rien invalide em> à propos de ce que vous avez fait, mais cela fait beaucoup plus difficile d'accéder aux données que vous souhaitez. Si vous pouviez le peut, changez la structure à quelque chose comme ça, alors que cela facilite votre vie: p> supposant que vous utilisez .NET 3.5 ou plus récent, vous aurez accès au LINQ-TO-XML API. Celles-ci fournissent une manière simplifiée de lire des valeurs à partir d'un document XML et doivent faire la résolution de ce problème un peu plus facile. P> Vous créez un document utilisant: P> foreach (string name in vegNames)
{
comboBox1.Items.Add(name);
}
Je suppose, vous utilisez C # dans .NET 4.0 Framework
Vous pouvez formater votre XML comme ceci: p> Utilisez simplement cette requête pour sélectionner celles-ci Articles: P> puis pour votre structure de classe: p>
Vous devez mettre les valeurs "pomme de terre" et "carottes" dans leur propre nœud. Vous devez simplement affiner votre processus de sélection, vous saisissez un nœud de haut niveau et imprime tout dans l'intérieur, plutôt que d'utiliser un sélecteur plus spécifique pour trouver des éléments spécifiques.
Comme alternative à l'ajout d'un nouveau nœud, vous pouvez mettre le nom de légumes en tant qu'attribut du nœud de légumes.