如何检查datcontract的XML输出

本文关键字:datcontract XML 输出 检查 何检查 | 更新日期: 2023-09-27 18:06:02

我继承了一些不能正常工作的代码。当然,它在最后一次提交时工作正常,但不知何故,它现在没有返回好的数据。历史日志显示的数据如下所示:

[0] => SimpleXMLElement Object
    (
        [Patron_Key] => 412730
        [x3.32] => 4A
        [x3.1] => 2014-01-08T08:00:00-07:00
        [x3.2] => 2014-01-22T07:59:59-07:00
    )

一个有效的字段名是x3.32。'x'是特意添加到列名的。但是,现在XML在字段名中出现了前导零,如下所示:

    <Patron_Key>363384</Patron_Key>
    <_x0033_.32>BC4S4B</_x0033_.32>
    <_x0033_.1>2013-08-15T08:00:00-06:00</_x0033_.1>
    <_x0033_.2>2014-05-13T07:59:59-06:00</_x0033_.2>

到目前为止,我已经检查了通过COM+来自DB的数据使用PowerShell是有效的。这让我认为它要么是代码,要么是IIS中的东西。每当我在COM+调用之后记录代码中的数据时,当它被放入数据表中时,它看起来很好。所使用的数据结构具有DataContract属性,所有类成员都具有DataMember属性。是否有一种方法可以在序列化/反序列化后检查数据,以查看是否添加了前导'003' ?

任何关于我在哪里看的想法都会很感激。我正在准备一个新的web服务器,只是为了确保它与IIS无关。

:

原来,问题是因为列名中的第一个字符是一个数字,而XML节点不能以数字开头。我们找到了一个GitHub评论,让我们在正确的方向,但我也链接到一个帖子,更详细地描述了这个问题。哦,有人在5个月前引入了一些代码,不能正确地检测列的第一个字符中的数字,所以我们不得不从一大堆提交中挖掘出令人不快的更改。

编码以数字开头的XML元素名称?

如何检查datcontract的XML输出

我看到两个问题:

  1. 是否有一种方法,我可以检查数据后,它序列化,看看如果这是在哪里的前导'003'被添加?
  2. 有什么想法在哪里我可以看?

第一个问题是我可以明确回答的:如果您能够在调试模式下运行应用程序并逐步执行代码,那么您应该能够使用调试器逐步执行序列化/反序列化并使用watch检查变量的内容。现在,您可能不得不涉及远程调试器,这取决于代码的运行位置,如果您有辅助进程,您可能需要运行几个Visual Studio实例,并在调试模式下运行应用程序的每个部分,以正确地跟踪问题,但这就是调试器的作用。