【发布时间】:2012-11-29 20:01:38
【问题描述】:
str1 和 str2 是字符串变量,它们保存要访问的节点的值,在这种情况下 str1 = "abc" 和 str2 = "efg"。变量 x 是一个整数,当我运行我的程序时,我得到一个“值对于 int32 来说太大或太小”错误:
XPathDocument xmlDoc = new XPathDocument(path);
XPathNavigator course= xmlDoc.CreateNavigator();
XPathNodeIterator value = course.Select("/root/x[@atr =" + str1 + "]/y[@atr =" + str2 + "]/value1");
x = Convert.ToInt32(value.Current.Value);
我的 xml 是:
<root>
<x atr = "abc">
<y atr ="efg">
<value1>12</value1>
<value2>25</value2>
<value3>16</value3>
</y>
</x>
</root>
【问题讨论】:
-
如果您打印该值,而不是将其提供给 Convert.ToInt32,该怎么办? (你的 XPath 和 xml 在这篇文章中不匹配)
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
-
我需要将 Xpath 中的值加载到变量中
-
@Thymine 已经解释了问题,即您的 XPathNodeIterator 的值表示为 xpath 表达式中所有节点的串联。如果您有许多节点,则该值可能太大而无法转换为 Int32。要获取单个子节点的值,请使用 MoveNext() 方法并将值转换为 Int32....