Ich habe ein XML-Beispiel:Wie erhalten Sie alle XML-Knoten mit demselben Namen, ohne deren Level zu kennen?
<Fruits>
<Red_fruits>
<Red_fruits></Red_fruits>
</Red_fruits>
<Yellow_fruits>
<banana></banana>
</Yellow_fruits>
<Red_fruits>
<Red_fruits></Red_fruits>
</Red_fruits>
</Fruits>
I 4 Red_fruits Tags, 2 von ihnen teilt die gleichen ParentNode (Früchte), möchte ich denen erhalten, die die gleiche ParentNode haben.
Aber ich will nur diejenigen, die den gleichen Namen haben (Red_fruits), was bedeutet, Yellow_fruits-Tag ist nicht enthalten.
Dies ist die Art, wie ich jetzt die Sprache C# tue:
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");
}
}
Dies kehrt mir alle red_fruits, nicht nur diejenigen, die Früchte gehört.
Ich kann XmlNodeList = doc.SelectNodes ("/ Fruits/Red_fruits") nicht machen, weil ich diesen Code verwenden möchte, um zufällige XML-Dateien zu lesen, daher kenne ich nicht den genauen Namen, den ein bestimmter Knoten haben wird. Ich muss nur alle Knoten mit demselben Namen und derselben Ebene in eine XmlNodeList mit C# Language setzen.
Gibt es eine Möglichkeit, dies zu erreichen, ohne LINQ zu verwenden? Wie geht das?
Haben Sie wirklich einen Versuch ohne einen Haken? Ich glaube nicht –
Warum die Einschränkung "ohne LINQ"? Was ich tun würde ist, die Ergebnisse dessen, was Sie haben, nach Tiefe zu gruppieren und dann die gewünschte Gruppe auszuwählen. – millimoose
Catch tut nichts zeigt nur eine Fehlermeldung, werde den Beitrag mit catch bearbeiten –