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>
就能弹出信息找到
展开
 我来答
FabKiller
2013-09-06 · TA获得超过586个赞
知道小有建树答主
回答量:676
采纳率:0%
帮助的人:482万
展开全部

问题在于: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

百度网友115a69b
2013-09-06 · TA获得超过253个赞
知道小有建树答主
回答量:428
采纳率:50%
帮助的人:383万
展开全部
使用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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ouyang4683
2013-09-06 · 超过42用户采纳过TA的回答
知道小有建树答主
回答量:153
采纳率:0%
帮助的人:80万
展开全部
if (nodes.ParentNode.Name == "OutputPath")
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式