C# XML查找节点
XML文件内容为<abc><OutputPath>111</OutputPath></abc>查找结点的代码为XmlDocumentdocument=newXmlDocu...
XML文件内容为
<abc>
<OutputPath>111</OutputPath>
</abc>
查找结点的代码为
XmlDocument document = new XmlDocument();
document.Load(文件路径);
XmlNode nodes = document.DocumentElement;
SearchInNodes(nodes);
private void SearchInNodes(XmlNode nodes)
{
if (nodes.HasChildNodes)
{
foreach (XmlNode node in nodes.ChildNodes)
{
SearchInNodes(node);
}
}
else
{
if (nodes.Name == "OutputPath")
{
MessageBox.Show("Found");
}
}
}
}
这边MessageBox 怎么弹不出Found ,然而把 XML文件改成
<abc>
<OutputPath></OutputPath>
</abc>
就能弹出信息找到 展开
<abc>
<OutputPath>111</OutputPath>
</abc>
查找结点的代码为
XmlDocument document = new XmlDocument();
document.Load(文件路径);
XmlNode nodes = document.DocumentElement;
SearchInNodes(nodes);
private void SearchInNodes(XmlNode nodes)
{
if (nodes.HasChildNodes)
{
foreach (XmlNode node in nodes.ChildNodes)
{
SearchInNodes(node);
}
}
else
{
if (nodes.Name == "OutputPath")
{
MessageBox.Show("Found");
}
}
}
}
这边MessageBox 怎么弹不出Found ,然而把 XML文件改成
<abc>
<OutputPath></OutputPath>
</abc>
就能弹出信息找到 展开
3个回答
展开全部
问题在于:nodes.HasChildNodes!
<OutputPath></OutputPath>的时候,nodes.HasChildNodes是false
而
<OutputPath>111</OutputPath>的时候,nodes.HasChildNodes是true
原因是111也算子节点,不信你自己可以看。所以,你要判断elementType!
所以,你如下写,应该就没问题了
if(node.NodeType == XmlNodeType.Element)
{
//这里再去调用你的方法
}
因为,<OutputPath>111</OutputPath>的时候,存在子节点,只不过,子节点的类型是
XmlNodeType.Text
展开全部
使用Xpath吧,比较简单:
XmlDocument doc = new XmlDocument();
doc.Load(文件路径)
XmlNodeList list = doc.SelectNodes("//OutputPath");//不考虑OutputPath所在XML中的路径
参见:
http://www.w3school.com.cn/xpath/xpath_syntax.asp
如果你的XML只是读取的话还可以考虑使用XPathDocument
XmlDocument doc = new XmlDocument();
doc.Load(文件路径)
XmlNodeList list = doc.SelectNodes("//OutputPath");//不考虑OutputPath所在XML中的路径
参见:
http://www.w3school.com.cn/xpath/xpath_syntax.asp
如果你的XML只是读取的话还可以考虑使用XPathDocument
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
if (nodes.ParentNode.Name == "OutputPath")
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询