C#中使用SelectSingleNode按值选取XML单个子节点问题
选取name为"Johnny Dapp33"的employee节点的XPath解决方案
直接用下面的XPath表达式就能精准定位目标节点://employee[name='Johnny Dapp33']
表达式说明
//employee:遍历XML文档中所有的employee节点(不管层级位置)[name='Johnny Dapp33']:过滤出子节点name的文本内容恰好等于"Johnny Dapp33"的employee节点
示例代码(以C#为例)
XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("你的XML文件路径"); // 执行节点选择 XmlNode targetEmployee = xmlDoc.SelectSingleNode("//employee[name='Johnny Dapp33']"); if (targetEmployee != null) { // 成功找到节点,这里可以添加你的业务逻辑 Console.WriteLine($"找到目标节点,ID为:{targetEmployee.Attributes["id"].Value}"); } else { Console.WriteLine("未找到匹配的节点"); }
注意事项
如果name节点的文本前后存在多余空格(比如换行、制表符),可以用normalize-space()处理空格后再匹配://employee[normalize-space(name)='Johnny Dapp33']
你的XML里虽然bar命名空间存在,但employee和name节点都不属于该命名空间,所以不需要额外处理命名空间的映射。
内容的提问来源于stack exchange,提问作者WizardZZ
相关产品推荐
相关产品推荐

