我正在使用PHP和SimpleXML,并且想知道哪个会更快并且使用更少的内存。我并不关心元素vs属性,而是关注PHP的执行情况。有10个部门和20个不同类别。文件可以属于多个部门和类别。
<file dep1="1" dep2="1" dep3="0" cat1="0" cat2="0" cat3="1" path="\path\to\file">
file description
</file>
或
<file path="\path\to\file">
<departments dep1="1" dep2="1" dep3="0" />
<categories cat1="0" cat2="0" cat3="1" />
<description>file description</description>
</file>
答案 0 :(得分:1)
对前N个部门使用名为dep1,dep2,dep3,...的属性(或元素)并不是一个好的XML设计。这与机器性能无关,它只是使数据可用,处理它的代码易于编写,结构可扩展。
重复数据应该是重复的同名元素。
答案 1 :(得分:0)
如果我理解你的问题:
除非你的最终XML是几兆字节,否则这不会造成问题。
您的性能问题在于分析和处理数据的方式,而不是XML文件的大小。
答案 2 :(得分:0)
表现几乎相同。 DOM中的属性节点和元素节点基本上是相同的数据结构,它们是从同一个基类派生出来的,会执行相同的。
重点是:XML结构与您的数据匹配。这是你应该使用的那个。
我倾向于使用这样的东西,这对我来说最自然:
<file>
<path>\path\to\file</path>
<description>file description</description>
<departments>
<dep id="1" />
<dep id="2" />
<!-- the ones that are 0 are omitted -->
</departments>
<categories>
<cat id="3" />
</categories>
</file>