在这里排名业余。我得到如何在XML中使用空元素的说明。但你为什么要这样?除了(我猜)在解析XML时添加空白记录,它会用于什么?
来自W3Schools的信息:
"空XML元素没有内容的元素被认为是空的。在 XML,你可以指出一个像这样的空元素:
<element></element>
或者你可以像这样使用一个空标签(这种元素语法是 称为自我关闭):<element />
上面两种形式产生 XML解析器中的结果相同。&#34;
答案 0 :(得分:5)
如果架构要求标签按特定顺序出现,则即使它具有空值,您也可能需要包含该标签。例如,架构中的以下片段表示您需要在标记栏之前标记foo:
<xs:element name="parent">
<xs:complexType>
<xs:sequence>
<xs:element name="foo" minOccurs="1" maxOccurs="1" />
<xs:element name="bar" minOccurs="1" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
</xs:element>
所以以下片段是有效的:
<parent>
<foo />
<bar>asdf!</bar>
</parent>
但以下不会:
<parent>
<bar>asdf!</bar>
</parent>
此外,您可以使用空标记来表示空值(而不是空值)。但是,如果您尝试在XML中表示空值,则应该使用xsi:nil
属性
答案 1 :(得分:3)
根据我的经验,我在使用API时遇到过很多这些格式。有时,API创建者具有空的变量,从而导致这些空XML标记。例如,假设您正在创建一个网站,可以收集不同酒店的酒店可用性。 A公司(某酒店公司)为您提供API访问权限。您发送请求并向他们提供以下内容:
<response>
<date>2008-01-10</date>
<available>TRUE</available>
</response>
但有时你可能会得到:
<response>
<date>2008-01-10</date>
<available>FALSE</available>
</response>
或者有时你会得到:
<response>
<date>2008-01-10</date>
<available></available>
</response>
作为开发人员,您必须创建可用于任何类型响应的代码,因为我们不确切知道数据是如何从API创建者发回的,这就是教程中提到的原因。希望这会有所帮助。
答案 2 :(得分:0)
我认为你正在使用&#34;空&#34;元素是指没有任何孩子的元素。&#34;自闭元素 - 没有单独的结束标记 - 可能仍然具有属性,并且在这个意义上不是空的。
(X)HTML本身定义&#34;空&#34;元素,例如<br/>
。同样,即使<br/>
可能还有class
和其他属性。
关于如何在自己的模式中使用它们的问题,您可以使用空XML元素作为&#34;标记&#34; (借用.NET使用术语&#34;标记接口&#34;对于没有成员的接口)。当你想要添加一个&#34; boolean&#34;属性为元素(如HTML允许无值属性,如checked
)。在这种情况下,使用属性会强制您添加某种噪声(以无意义或空值的形式)。
我以这种方式使用它,例如,在莎士比亚戏剧中将演讲标记为散文:
<speech>
<speaker role="Archidamus">Archidamus</speaker>
<prose/>
<line a="If_you">If you shall chance, Camillo, to visit Bohemia, on</line>
<line a="the_like">the like occasion whereon my services are now on</line>
<line a="foot_you">foot, you shall see, as I have said, great</line>
<line a="difference_betwixt">difference betwixt our Bohemia and your Sicilia.</line>
</speech>
也就是说,解决可能被视为XML缺陷的问题, viz ,无法表示非文本原语。