代码之家  ›  专栏  ›  技术社区  ›  MB.

简单XML值的元素内容与属性

xml
  •  0
  • MB.  · 技术社区  · 14 年前

    我知道元素与属性的争论在这里和其他地方已经多次出现(例如 here , here , here , here here )但对于简单属性值的元素与属性,我没有看到太多的讨论。

    那么,您认为以下哪种方法更适合存储简单值?

    A:元素含量值 :

    <TotalCount>553</TotalCount>
    <CelsiusTemperature>23.5</CelsiusTemperature>
    <SingleDayPeriod>2010-05-29</SingleDayPeriod>
    <ZipCodeLocation>12203</ZipCodeLocation>
    

    B:属性值 :

    <TotalCount value="553"/>
    <CelsiusTemperature value="23.5"/>
    <SingleDayPeriod day="2010-05-29"/>
    <ZipCodeLocation code="12203"/>
    

    我怀疑在元素内容(a)中输入值对大多数人来说可能看起来更熟悉一些(尽管我不确定)。

    将值放入属性(B)中可能会使用较少的字符,但这取决于元素和属性名称的长度。

    将值放入属性(B)中可能更具可扩展性,因为您可能会将各种额外信息作为嵌套元素包含在内。然而,通过将值放入元素内容(a)中,您将限制扩展性以添加更多属性。但是,扩展性通常不关心真正简单的属性——有时 知道 你永远不需要添加额外的数据。

    归根结底,这可能根本不重要,但听到一些想法并看到两个选项的一些投票仍然是件好事。

    5 回复  |  直到 9 年前
        1
  •  1
  •   Community Jaime Torres    7 年前

    我不确定这是否值得进行民意调查。选项B显然是错误的。它使用了冗余的信息,并且很难使用XML模式进行验证。

    “将军” debate “是要使用您的选项A还是类似的选项:

    <Measurements totalCount="553" 
                  celsiusTemperature="23.5"
                  singleDayPeriod="2010-05-29"
                  zipcodeLocation="12203"/>
    
        2
  •  1
  •   mdma    14 年前

    对于方法B,您必须记住属性名。一个自动完成的XML编辑器可以缓解这一问题,但是,使用选项A,使用元素值,还有一件事情需要记住,并且没有歧义。例如,如果我定义两个属性,比如

    <MyProperty code="ABC" date="01-02-03"/>
    

    您选择的属性或元素值将取决于预期的访问群体、如何生成XML文件、如何验证这些文件以及(由人)读取这些文件的频率。

        3
  •  0
  •   MB.    14 年前

    A:元素含量值 更好。例如

    <TotalCount>553</TotalCount>
    <CelsiusTemperature>23.5</CelsiusTemperature>
    <SingleDayPeriod>2010-05-29</SingleDayPeriod>
    <ZipCodeLocation>12203</ZipCodeLocation>
    

    (回答仅用于投票目的-我将其标记为社区wiki,这样我就不会获得升级投票的学分。)

        4
  •  0
  •   MB.    14 年前

    B:属性值 更好的是:

    <TotalCount value="553"/>
    <CelsiusTemperature value="23.5"/>
    <SingleDayPeriod day="2010-05-29"/>
    <ZipCodeLocation code="12203"/>
    

    (回答仅用于投票目的-我将其标记为社区wiki,这样我就不会获得升级投票的学分。)

        5
  •  0
  •   robert vano    12 年前

    如何:

    <weather>
      <TotalCount type="string">553</TotalCount>
      <CelsiusTemperature type="string">23.5</CelsiusTemperature>
      <SingleDayPeriod type="date" format="%Y-%m-%d">2010-05-29</SingleDayPeriod>
      <ZipCodeLocation type="integer">12203</ZipCodeLocation>
    </weather>
    

    SimpleXML仅当您直接在键上请求时才显示属性。

    print_r( $wheather->SingleDayPeriod )
    

    如果您请求oute结构,则不会

    print_r( $weather )