Wie alle XML-Knoten mit dem gleichen Namen, ohne zu wissen, Ihr Niveau?

Ich habe eine XML-Beispiel:

<Fruits>
    <Red_fruits>
        <Red_fruits></Red_fruits>
    </Red_fruits>
    <Yellow_fruits>
        <banana></banana>
    </Yellow_fruits>
    <Red_fruits>
        <Red_fruits></Red_fruits>
    </Red_fruits>
</Fruits>

Ich habe 4 Red_fruits tags, 2 von Ihnen teilen sich die selben ParentNode (Früchte), ich will diejenigen bekommen, die die gleiche ParentNode.

Aber ich möchte nur diejenigen, die den gleichen Namen (Red_fruits), was bedeutet, dass Yellow_fruits tag ist nicht inbegriffen.

Dies ist der Weg, ich mache jetzt mit C# - Sprache:

XmlDocument doc = new XmlDocument();
string selectedTag = cmbX.text;

if (File.Exists(txtFile.text))
{
    try
    {
        //Load
        doc.Load(cmbFile.text);

        //Select Nodes
        XmlNodeList selectedNodeList = doc.SelectNodes(".//" + selectedTag);
    }
    Catch
    {
        MessageBox.show("Some error message here");
    } 
 }

Dieser wieder mich alle red_fruits, nicht nur diejenigen, gehört zu den Früchten.

Kann ich nicht machen, XmlNodeList = doc.SelectNodes("/Obst/Red_fruits"), weil ich will, um diesen code zu Lesen random XML-Dateien, so weiß ich nicht den genauen Namen, die bestimmten Knoten haben, brauche ich nur, um alle Knoten mit dem gleichen Namen und derselben Ebene in eine XmlNodeList mit C# - Sprache.

Gibt es eine Möglichkeit dies ohne die Verwendung von LINQ? Wie macht man das?

  • Haben Sie wirklich einen Versuch ohne einen Fang? Ich glaube nicht, dass so
  • Warum die Einschränkung "ohne die Verwendung von LINQ"? Was ich tun würde, ist die Gruppe die Ergebnisse von dem, was Sie haben, indem Sie Tiefe, wählen Sie die Gruppe, die Sie möchten.
  • Fangen tut nichts, zeigt nur eine Fehler Meldung, werde den Beitrag editieren mit fangen
  • Im Grunde denke ich nicht, dass Sie implementieren können, "alle tags in der gleichen Tiefe", ohne die Beantwortung der Frage, "was die Tiefe"?
  • Ich kann nicht mit LINQ, da mein vs-version ist 2005 :/
  • Viel Glück w/o Linq-to-XML. Ansonsten Descendants("Red_Fruits") zurückkehren würde, nichts, die hat "Red_Fruits" - tag. 🙂
  • Gleichen Namen, nach dem Zufallsprinzip Tiefe.
  • 1. Gut, Herr, warum?! An diesem Punkt würde ich prüfen, die nur mit MonoDevelop/XamarinStudio gegen den Strom .NET FW. 2. Egal, es gibt nichts in LINQ können Sie nicht selbst implementieren, es macht die Sache nur übersichtlicher. 3. Egal, redux, denn das ist nicht der Kern Ihres Problems.
  • Ist .Net 3.5 nicht verfügbar für VS 2005? Ich glaube nicht .Net version abhängig war, die die VS-version ...???
  • Alte VS-Versionen nicht unterstützen würden die Funktionen der Sprache gefunden, in die neue. Wie erweiterungsmethoden für LINQ.
  • Tiefe" ist nicht sinnvoll. Ich meinte, dass buchstäblich die Tiefe muss der Eingang sein, um Ihren Algorithmus, so können Sie die Elemente in die Tiefe. Alternativ können Sie die Ausgabe verändern werden "- Gruppen für alle tiefen gefunden". Oder Sie können angeben, dass Sie die minimale oder maximale mögliche Tiefe.
  • Außerdem, was würde die Lösung zurück, wenn Sie bekommen Cabbage Elemente aus dieses XML: <Foo><Rincewind><Cabbage>...</Cabbage></Rincewind><Womble><Cabbage>...</Cabbage></Womble></Foo>? Wird es sein, sowohl Kohl, oder gruppiert, basierend auf, was Ihre Eltern-element ist? Grundsätzlich finde ich Ihre Frage völlig underspecified.
  • sind Sie auf der Suche für die geringste Tiefe?
  • Ich habe gesagt, zufällige Tiefe, weil die Xml-Datei wird random ein zufälliger Knoten 2 oder mehr ChildNodes mit dem gleichen Namen. Sie sagen, das ist unmöglich zu tun, ohne LINQ und ohne Kenntnis der Tiefe?
  • Das ist nicht das, was "zufällig" bedeutet. Sicherlich, wenn eine XML-Eingabedatei, die Sie beantworten können, was Tiefe, die Sie möchten, basierend auf irgendeine Art von Regeln. So müssen Sie herausfinden, diese Regeln.
  • und was ist das über "same ParentNode". Gleichen übergeordneten Knoten und die gleiche Tiefe, sind 2 verschiedene Dinge.
  • ich denke, du hast Recht, ich bin verwirrend gleicher Tiefe mit dem gleichen übergeordneten Knoten, lass mich nachdenken für eine Sekunde...
  • Ich würde es länger als eine Sekunde, und versuchen, tatsächlich denke, der ehrliche zu Güte von Testfällen für das, was Sie wollen, dass für die verschiedenen Grenzfälle. Vorzugsweise geben Sie Ihre Elemente-IDs oder einige Inhalte, so können Sie uns sagen, welche sollte und welche sollten nicht im Ergebnis.
  • In meinem Szenario habe ich, um ein Nächsten/Vorherigen Schaltfläche, in der "Nächsten" bedeutet, den nächsten Knoten mit dem gleichen Namen und die gleichen Eltern. Egal, ob Sie in der gleichen Tiefe
  • lassen Sie mich es zu Ihnen so: Ihr Beispiel-XML hat Red_fruits bei 2 verschiedenen tiefen. Nennen wir diese tiefen level 2 und level 3. Welche dieser Tiefe wollen Sie die roten Früchte aus? und was macht, dass die Tiefe stimmt und die anderen die Tiefe falsch?
  • Ich möchte die Red_fruits aus der Tiefe 2, da der Red_fruits aus der Tiefe 3 nicht gehört zu Obst.
  • wenn Sie bestimmen, welche Ebene ist die richtige, was der übergeordnete Knoten ist, als das, was ist falsch mit doc.SelectNodes("//" + parentTag + "/" + selectedTag)?
  • dies ist, was ich versuche zu tun, aber das gibt mir nichts. Ich denke, das passiert, weil Obst ist nicht die Wurzel. Frucht, die Tiefe ist unbekannt. Also "//" wird nicht funktionieren, denke ich

Schreibe einen Kommentar