6
votes

Comment lire des valeurs à partir d'un document XML pour créer une combinaison?

J'essaie de lire un fichier que je veux faire pour ma mère. Donc, fondamentalement c'est ce que je veux faire:

  1. A Combobox qui affichera tous les noms de légumes dans le XML.
  2. Après avoir sélectionné un légume, le deuxième Combobox affichera les noms de recette dans le XML pouvant utiliser le légume sélectionné dans le premier Combobox pour la cuisson.
  3. Enfin, avec un bouton OK , la recette sélectionnée lira le chemin de fichier qui mène à la recette.

    xml j'ai écrit xxx

    code xxx

    le premier comboBox est maintenant capable d'afficher les noms de légumes, mais comment faire le 2e comboBox pour lire les recettes?


2 commentaires

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.


3 Réponses :


1
votes

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>


4 commentaires

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 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 . Un bon exemple de ceci est xhtml, où

bonjour mr x 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



1
votes

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> xxx pré>

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


0 commentaires

1
votes

Je suppose, vous utilisez C # dans .NET 4.0 Framework

Vous pouvez formater votre XML comme ceci: xxx

Utilisez simplement cette requête pour sélectionner celles-ci Articles: xxx

puis pour votre structure de classe: xxx


0 commentaires