Ich habe gerade etwas Code geschrieben, der, wie ich schrieb, ich dachte, dies wird eine nette generische Methode sein, nach einem bestimmten Knoten zu suchen. Als ich fertig war mir klar, eigentlich war es ein Durcheinander: DWie Code neu geschrieben wird, der Knotenliste navigiert
public String sqlReading(String fileName, String path, String nodeId)
{
XmlDocument doc = new XmlDocument();
doc.Load(fileName);
XmlNodeList names = doc.SelectNodes(path);
foreach (XmlNode xmlDocSearchTerm in names)
{
//if the attribute of the node i start at is the same as where i am now
if (xmlDocSearchTerm.Attributes.Item(0).Value.ToString().Equals(nodeId))
{
//get a list of all of its child nodes
XmlNodeList childNodes = xmlDocSearchTerm.ChildNodes;
foreach (XmlNode node in childNodes)
{
//if there is a node in here called gui display, go inside
if (node.Name.Equals("GUIDisplay"))
{
XmlNodeList list = node.ChildNodes;
//find the sqlsearchstring tag inside of here
foreach (XmlNode finalNode in list)
{
if (finalNode.Name.Equals("sqlSearchString"))
{
return node.InnerText;
}
}
}
}
}
}
return "";
}
Was ich gedacht war auf dem Weg zu tun basiert - ich anfangen würde, und prüfen Sie, ob das Element die ID hatte ich suchte, wenn es Dann wollte ich dort reingehen und nicht aufhören, bis ich zu dem sqlsearchstring-Tag kam, der zwei Ebenen tiefer begraben war. Ich habe das geschafft, aber das Problem hier ist, dass ich jetzt scheinbar einen Pfad zum Tag hart codiert habe, der dem Schleifen dort entgegensteht. Wie kann ich meinen Code ändern, um mich davon abzuhalten?
Es ist von der zweiten foreach, wo es falsch geht imo.
Dank
mit XPath, ich glaube, Sie ersetzen können alle 'foreach' Schleifen mit einer einzigen Zeile –
Suchen Sie nach XPath? http://support.microsoft.com/kb/308333 – dsolimano
Haben Sie von XPath gehört? – mjv