XML,这是什么:null或空元素?

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

我从第三方服务器获取了像这样的元素进行API测试:

<Taxable />
<DefaultPurchasePrice />

我只是意识到,现在我感到困惑的是,这样的元素是否表示空对象或空.

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

再次,我的XmlSerializer的问题是不会处理传递一个这样的空的元素.我可以在我的代码中轻松解决这个问题.或者我应该问人们提供的XML有一个定义良好的XML?因为似乎这样一个空的XML元素是未定义的:它在这里,但是可以是null还是空对XML元素本身无关紧要?但是对于那个元素,我的代码需要弄清楚如何处理,除非我将我所有的C#类数据字段设置为字符串类型.否则,如果我的代码试图将一个空的或空的XML元素直接映射到某个数据域,那么它将会失败.

我必须提出这个问题,因为我遇到的XML有很多这些元素
对于这些特殊元素,我的.NET XMLserialization代码需要将这些字段映射为字符串,如果字符串不为空,则将其视为相应的数据类型,否则将其设置为null.在我做我的反序列化之前,我最终删除这些空的元素,因为它容易得多.但是我徘徊:“我在代码中真正做了什么?我只是删除空元素或空元素,因为它们有明显的不同,但是写XML的人认为它们是一样的,因为XML本身没有’null’,有些人认为我有责任决定它是空还是空,但XML可以让你到represent ‘null’ elements in a clearer way

编辑:

在我提出的例子中,这两个元素显然应该是空的而不是空的元素. XML不是真的有一个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结构之上自由构建自己的语义,并添加一个不存在的显式零的情况.这种灵活性被认为是XML的优点.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇