代码之家  ›  专栏  ›  技术社区  ›  Chris Roberts

SOAP消息中布尔值的正确编码是什么?

  •  12
  • Chris Roberts  · 技术社区  · 14 年前

    在测试中,我们的客户机提出了一个问题,抱怨我们的web服务生成的XML使用'true'和'false'作为布尔值,而不是'1'和'0'。此外,他们还暗示,我们的实施因为这一点而“中断”。

    我的印象是在这种情况下“真/假”和“1/0”是可以互换的?

    不管怎样,所有的XML序列化都是由.NET框架来处理的,而不是我们的代码—所以我认为我几乎没有机会更改它?!

    有谁能给我指一些文件,要么支持我的故事,要么证明我错了?如果我错了,有人知道我怎样才能改变这种行为吗?

    提前谢谢。。。

    3 回复  |  直到 14 年前
        1
  •  15
  •   Cameron Skinner    14 年前

    SOAP spec 布尔布尔形式“1”和“true”是可以互换的。

    没什么好说的,真的。

        2
  •  3
  •   Wim ten Brink    14 年前


    因为我们的软件也被其他客户使用,所以我们首先想把“手指”发给他们,让他们安静地消失。但一位来自市场营销部的人找到了一个更好的解决方案,我们的一位开发人员被派到这个客户机,就XML的正确使用给出了更多的建议。我们教育了客户机,客户机突然意识到他们不必编写自己的解析器。我们帮助他们改进了自己的代码库,让他们非常高兴,因为我们通过教育他们解决了这个问题。所有这些都是为了一个小的,额外的费用,所以营销也很高兴。:-)

    yes/no/filenotfound ...
    尽管如此,通常还是倾向于使用布尔值,为了使SOAP消息可读,最好使用true/false,因为人们在使用1/0时容易出错。为什么?很简单,1是真的吗?还是假的?在某些编程语言中,-1表示真。在旧的语言中,1代表错误。(因为在这些语言中,布尔值是一种错误位,如果设置为1,则表示错误。)
    因此,可读性应该意味着您应该更喜欢使用true/false,否则最终会讨论为什么1表示true。。。

        3
  •  2
  •   MusiGenesis    14 年前

    1. true false 是SOAP中完全有效的布尔值。然后对付一个愤怒的客户。

    2. 将布尔属性更改为int。

    我自己也会去,只是为了一切的和谐。