我刚刚编写了一些代码,正如我在编写代码时所想的那样,这将成为搜索特定节点的一种很好的通用方法。当我完成我真正意识到这是一个烂摊子: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我一直在寻找,如果它那么我想进入那里,并没有停下来,直到我得到了深入两层的sqlsearchstring标签。我已经管理了,但这里的问题是,现在我似乎几乎硬编码了一个路径到标签反对循环。我怎么能改变我的代码来阻止我这样做?
它从第二个foreach哪里出错了。
感谢
在XPath,我想你可以替换所有`foreach`与单行循环代码 – 2010-12-06 14:24:48
您是否在寻找XPath?http://support.microsoft.com/kb/308333 – dsolimano 2010-12-06 14:24:50