gpt4 book ai didi

XML,这是什么 : null or empty element?

转载 作者:数据小太阳 更新时间:2023-10-29 01:42:08 25 4
gpt4 key购买 nike

关于我的另一个问题:XML deserialize null elements?

我从用于 API 测试的第三方服务器获得了像这样的元素:

<Taxable />
<DefaultPurchasePrice />

我刚刚意识到,现在我对这样的元素是表示 null 对象还是空对象感到困惑。

说到对象,它们是一样的,null object 通常意味着空对象引用,对吗?但是尝试将 XML 元素映射到数据字段/值,它们可能不同,即空字符串是空字符串,但对于十进制价格或 bool 值,它们是未定义的,等于空,但不会为空,除非它们被定义作为可空。

同样,我的 XmlSerializer 的问题是它不会像那样处理空元素的传输。我可以在我的代码中轻松修复它吗?或者我应该问人们提供的 XML 有一个定义明确的 XML 吗?因为似乎像这样的空 XML 元素是未定义的:它在这里,但对于 XML 元素本身来说可以是 null 或空并不重要?但是对于那个元素,我的代码需要弄清楚如何处理它,除非我将所有 C# 类数据字段设置为字符串类型。否则,如果我的代码试图将一个空的或 null 的 XML 元素直接映射到某个数据字段,它肯定会失败。

我不得不问这个问题,因为我遇到过 XML 有很多这样的元素对于那些特殊元素,我的 .NET XMLserialization 代码需要将这些字段映射为字符串,如果字符串不为空,我将它们转换为对应的数据类型,否则我将它们设置为 null。在我进行反序列化之前,我最终删除了那些空元素,因为它更容易。但我确实在徘徊:“我在我的代码中到底在做什么?我只是删除了 null 元素还是空元素?因为它们明显不同!但是编写 XML 的人认为它们是相同的,因为 XML本身没有“null”的概念,有些人争辩说我有责任决定它是 null 还是空的。但是 XML 确实使你能够 represent 'null' elements in a clearer way

编辑:

在我给出的示例中,这两个元素显然应该为 null 而不是空元素。 XML 并没有真正的 null 概念,但可以省略这些元素(如果它们为 null,则不要将它们放入 XML 中)或使用 @svick 提到的更好的表示形式。或者在其他情况下,应该在有意义时使用空元素。但不适用于 Decimal 或 Boolean。

最佳答案

<Taxable />
<DefaultPurchasePrice />

what is this: null or empty element?

它是空的。它在语义上与:

<Taxable></Taxable>
<DefaultPurchasePrice></DefaultPurchasePrice>

XML 本身存在的唯一“空”概念是缺失元素。您不能使用 XML 的语义指定一个元素说它是空的。您必须具有某种模式(显式模式,例如 DTD、XSD 或 Schematron,或隐式/逻辑模式)才能执行此操作。

不过,这并不限制解释 XML 的应用程序或官方 XML 相关技术。例如,XSD 有一个 xsi:nil="true" 属性。即使您可以将其中一些模式属性应用于 XML,这些属性也不是“纯”XML;它们是由 XSD 模式提供的附加项。

在这种情况下,XSD 可以在基本 XML 结构之上自由构建自己的语义,并在不存在的地方添加显式的 nil。这种灵 active 被认为是 XML 的优势。

关于XML,这是什么 : null or empty element?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7238254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com