您喜欢哪种XML结构,元素还是属性?(C#,PHP…)
可能重复:您喜欢哪种XML结构,元素还是属性?(C#,PHP…),xml,Xml,可能重复: 我经常倾向于使用c#和php对象及其属性和数据创建xml,以便能够将数据和结构存储在文件、数据库中,并能够将其移植到其他系统 我的问题是使用元素结构或属性结构的利弊(如果有的话) 元素结构 <Body> <Row Name="Gender"> <Col> <Key>FieldId</Key> <Value>1</Value> </Col>
我经常倾向于使用c#和php对象及其属性和数据创建xml,以便能够将数据和结构存储在文件、数据库中,并能够将其移植到其他系统 我的问题是使用元素结构或属性结构的利弊(如果有的话) 元素结构
<Body>
<Row Name="Gender">
<Col>
<Key>FieldId</Key>
<Value>1</Value>
</Col>
<Col>
<Key>ParentId</Key>
<Value></Value>
</Col>
</Row>
<Row Name="Weight">
<Col>
<Key>FieldId</Key>
<Value>3</Value>
</Col>
<Col>
<Key>ParentId</Key>
<Value></Value>
</Col>
</Row>
</Body>
<Body>
<Row Name="Gender">
<Col Key="FieldId" Value="1" />
<Col Key="ParentId" Value="0" />
</Row>
<Row Name="Weight">
<Col Key="FieldId" Value="2" />
<Col Key="ParentId" Value="0" />
</Row>
</Body>
菲尔德
1.
父ID
菲尔德
3.
父ID
属性结构
<Body>
<Row Name="Gender">
<Col>
<Key>FieldId</Key>
<Value>1</Value>
</Col>
<Col>
<Key>ParentId</Key>
<Value></Value>
</Col>
</Row>
<Row Name="Weight">
<Col>
<Key>FieldId</Key>
<Value>3</Value>
</Col>
<Col>
<Key>ParentId</Key>
<Value></Value>
</Col>
</Row>
</Body>
<Body>
<Row Name="Gender">
<Col Key="FieldId" Value="1" />
<Col Key="ParentId" Value="0" />
</Row>
<Row Name="Weight">
<Col Key="FieldId" Value="2" />
<Col Key="ParentId" Value="0" />
</Row>
</Body>
欢迎提出任何建议和建议 我更喜欢第一版,因为: 属性的一些问题包括:
- 属性不能包含多个值(子元素可以)
- 属性不易扩展(用于将来的更改)
- 属性不能描述结构(子元素可以)
参考:我通常更喜欢混合样式,其中每个元素的“主要内容”是文本节点。在您的示例中,“值”显然是主要内容,因此我将使用:
<Body>
<Row Name="Gender">
<Col Key="FieldId">1</Col>
<Col Key="ParentId">0</Col>
</Row>
<Row Name="Weight">
<Col Key="FieldId">2</Col>
<Col Key="ParentId">0</Col>
</Row>
</Body>
1.
0
2.
0
我对这种样式的主要观点是,它将易读性与对各种内容/值的支持结合在一起:属性样式经常会在内容中的换行符处阻塞(例如,MSXML和.Net将正确解析,但在再次输出源Xml时会规范化属性内容),因此如果要保留文本格式,以属性为中心的样式通常是一个错误的选择
在与评论相关的问题中,有几个人将其描述为“数据与元数据”问题,我认为这是一个很好的总结。元素中的数据,属性中的元数据。相关问题:当您可以使用JSON?-1引用W3作为参考时,为什么要用XML将其复杂化。我很抱歉,但这需要劝阻。我支持这个答案。我使用这些属性只是为了数据的ID,但我将其他所有内容都放在子元素中。@Alin,w3.org它是原始源代码……发布多个问题的复制粘贴样板/逐字回答时要小心,这些问题往往被社区标记为“垃圾邮件”。