C# 如何从XML字符串中提取指定Key属性的parameter节点值
解决方案
1. 先修正XML语法错误(否则加载直接失败)
原XML中<equity>节点存在两处语法问题:
- 两个属性之间多了多余逗号
- index属性值未加引号
修正后的XML结构如下:
<equity location="New York" index="0"> <bucket date="20211009"> ... </bucket> <parameters> <parameter Key="ID">1234</parameter> <parameter Key="A">6</parameter> <parameter Key="B">22.5</parameter> <parameter Key="C">12</parameter> <parameter Key="BD">12,8,5</parameter> </parameters> </equity>
2. 原有代码问题说明
你编写的代码存在3类错误:
- 变量名拼写错误、方法名大小写不符合C#规范,
xmmldoc.loadXML存在拼写和大小写问题 - XPath轴名称大小写敏感,
Descendant::首字母大写不符合规范,也可直接用更简洁的//代替后代节点查找逻辑 - 节点取值逻辑错误,XML元素节点的
Value属性默认返回null,需要取InnerText属性才能拿到节点包裹的文本值
3. 最终可运行代码
XmlDocument xmldoc = new XmlDocument(); // 修正拼写错误和方法名大小写 xmldoc.LoadXml(doc.content); // 修正XPath,先判空避免空引用异常 XmlNode targetParam = xmldoc.SelectSingleNode("//parameters/parameter[@Key='B']"); if (targetParam != null) { var key = targetParam.InnerText; // 此处key的值即为22.5 }
内容的提问来源于stack exchange,提问作者V1ct0r 6l0r1eux
相关产品推荐
相关产品推荐

