私は思ったように、これは特定のノードを検索するための素敵な一般的な方法になるだろう、いくつかのコードを書いただけです。私が終わったとき、私は実際にそれが混乱気づいた:Dノードリストをナビゲートするコードを書き直す方法
私が何を意図したもの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 "";
}
はパスに基づいていた - それならば、私は、開始と要素は私が探していたIDを持っていたかどうかをチェックします私はそこに入って、2つのレベルをより深く埋めるsqlsearchstringタグに到達するまで行きたくありませんでした。私はそれを管理しましたが、ここでの問題は、そこにループすることに反対するタグのパスをほとんどハードコーディングしているようです。私はこれをやめないようにコードを変更することができますか?
その2番目のforeachからどこが間違っているか。
おかげ
XPathでは、すべての 'foreach'ループを1行で置き換えることができると思います –
XPathをお探しですか?http://support.microsoft.com/kb/308333 – dsolimano
XPathについて聞いたことがありますか? – mjv