- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
关于我的另一个问题: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/
最近开始学习oracle和sql。 在学习的过程中,我遇到了几个问题,我的 friend 在接受采访时被问到这些问题。 SELECT * FROM Employees WHERE NULL IS N
这个问题在这里已经有了答案: Can we subtract NULL pointers? (4 个回答) 关闭 2 个月前。 是否定义了NULL - NULL? (char *)NULL - (ch
是否有推荐的方法(根据 .net Framework 指南)检查 null,例如: if (value == null) {//code1} else {//code2} 或 if (value !=
我正在尝试将值插入数据库,但出现这样的错误任何人都可以告诉我为什么该值为空,如下所示: An exception occurred while executing 'INSERT INTO perso
这个问题在这里已经有了答案: String concatenation with a null seems to nullify the entire string - is that desire
您好,我正在 Android 联系人搜索模块中工作。我正在查询下方运行。 cur = context.getContentResolver().query(ContactsContract.Data.
下面的 SQL 表定义说明了从我的 MYSQL 数据库创建表的语句之一,该数据库是由我公司的前开发人员开发的。 DROP TABLE IF EXISTS `classifieds`.`category
我主要有应用程序开发背景。在编程语言中 variable == null或 variable != null有效。 当涉及到 SQL 时,以下查询不会给出任何语法错误,但也不会返回正确的结果。 sel
我在尝试检查某些元素是否为 NULL 时遇到段错误或不。任何人都可以帮忙吗? void addEdge(int i, int j) { if (i >= 0 && j > 0)
在 SQL 服务器中考虑到以下事实:Col1 和 Col2 包含数值和 NULL 值 SELECT COALESCE(Col1,Col2) 返回一个错误:“COALESCE 的至少一个参数必须是一个不
在 SQL 服务器中考虑到以下事实:Col1 和 Col2 包含数值和 NULL 值 SELECT COALESCE(Col1,Col2) 返回一个错误:“COALESCE 的至少一个参数必须是一个不
下面查询的关系代数表达式是什么?我找不到“Is Null”的表达式。 SELECT reader.name FROM reader LEFT JOIN book_borrow ON reader.ca
我正在尝试使用三元运算符来检查值是否为 null 并返回一个表达式或另一个。将此合并到 LINQ 表达式时,我遇到的是 LINQ 表达式的 Transact-SQL 转换试图执行“column = n
我在给定的代码中看到了以下行: select(0, (fd_set *) NULL, (fd_set *) NULL, (fd_set *) NULL, &timeout); http://linux
var re = /null/g; re.test('null null'); //> true re.test('null null'); //> true re.test('null null')
这个问题在这里已经有了答案: 关闭 13 年前。 我今天避开了一场关于数据库中空值的激烈辩论。 我的观点是 null 是未指定值的极好指示符。团队中有意见的其他每个人都认为零和空字符串是可行的方法。
由于此错误,我无法在模拟器中运行我的应用: Error:null value in entry: streamOutputFolder=null 或 gradle - Error:null value
我正在尝试在 Android 应用程序中创建电影数据库,但它返回错误。知道这意味着什么吗? public Cursor returnData() { return db.query(TABLE
我一直在检查浏览器中的日期函数以及运行时间 new Date (null, null, null); 在开发工具控制台中,它给出了有效的日期 Chrome v 61 回归 Sun Dec 31 189
为什么 NA==NULL 会导致 logical (0) 而不是 FALSE? 为什么 NULL==NULL 会导致 logical(0) 而不是 TRUE? 最佳答案 NULL 是一个“零长度”对象
我是一名优秀的程序员,十分优秀!