0

我对selectSingleNode函数有疑问。

上下文:在程序中我需要执行一些后续过滤器,通常我对这些没有问题,但这次我有一个奇怪的“错误”。

我有下一个代码:

Dim test As XmlNode = parentXmlnode.SelectSingleNode("day[@date='" & fecha.Date.ToString("o") & "']"


问题: 当我调试/运行上面的代码时,变量“test”总是什么都没有,但是如果我在“selectSingleNode”指令上应用“watch”,它确实会返回一个 XmlNode。

不管我回去重新调试这部分代码,结果总是一样的。

当然上面的代码是对原始代码的过度简化,这里是导致问题的未修改的原始代码:

编辑:不需要完整的代码,实际上它使问题难以阅读,错误出现在之前暴露的代码行中。

任何信息都非常感谢。提前致谢。

4

1 回答 1

0

错误出现在代码的“ fecha.Date.ToString("o") ”部分。

当我在那部分使用 watch 实用程序时,我得到了ISO 8601 (2009-06-15T13:45:30.0000000)的DateTimeKind.Unspecified 格式

但是当代码被插入时,程序得到了ISO 8601 (2009-06-15T13:45:30.0000000Z)的DateTimeKind.UTC格式

我通过使用中间字符串变量来存储 xpath 过滤器发现了这一点。我不知道为什么手表实用程序会改变我的结果,也许有海森堡的粒子复合体

但更正是使用专门声明为 datetimekind UTC的“datetime”中间变量:

解决方案

Dim fechaAux As String = New DateTime(fecha.Ticks, DateTimeKind.Unspecified).ToString("o")
Dim test As XmlNode = parentXmlnode.SelectSingleNode("day[@date='" & fechaAux.Date.ToString("o") & "']"

这些东西让我耽搁了好几天,我希望有人觉得这个问题/答案有用。

此致。

于 2014-09-17T14:55:35.040 回答