XML作为数据库

时间:2010-01-28 23:02:26

标签: php xml database

我一直在阅读有关XML,XSL,XPath等的内容。我想在PHP中使用XML作为数据库来创建一个简单的CRUD应用程序。我将使用SimpleXML但是在通过stackoverflow阅读一些答案之后,似乎很多人建议使用DOMDocument(使用DOMDocument比使用SimpleXML有什么好处?)

无论如何,困扰我的是如何在他们身上添加ID?我应该从“1”开始,然后当有人添加节点时,增加它,依此类推?

还有类别,我想要有这种结构

Parent  
 - Children          
 - Children  
   - Subchildren  

我知道如何将它放在XML中,但问题在于解析它们。

无论如何,类别并没有真正打扰我。我更有兴趣知道我是否应该保存在XML中保存的ID计数并将其用作“参考”。

5 个答案:

答案 0 :(得分:5)

你说“XML作为数据库。” XML只是一种标记语言,所以你真正的意思是一个文件作为数据库”< / em>那将是一个错误。您将遇到并发问题,可能的损坏和大量其他问题,更不用说大型XML文档的糟糕表现。

如果您需要的是数据库,那么只需使用:数据库。不是档案。

SQLite易于使用且速度足以轻载,尽管它与phpMyAdmin缺乏良好的对应关系。否则,您的webhost肯定会提供MySQL数据库。

答案 1 :(得分:1)

作为一个练习,这很有趣,但每个人都告诉你不要使用XML这是正确的。 RDBMS是您正在阅读和写作的典型存储解决方案。

至于你的问题,我可能会向我关心id的任何节点添加id属性。然后,如果我使用DOM扩展,我会setAttribute,或者如果我使用的是SimpleXML,我会使用addAttribute

但是在PHP中处理XML还有更多的解决方案。我会看看很多,看看哪个最能满足你的需求。

祝你好运。

答案 2 :(得分:0)

IMO我不会在xml中保留id计数。如果你想将它作为一个var缓存在脚本中我认为没问题 - 那么只要在第一次添加该类型的新元素时根据需要对该特定元素进行计数。否则,如果文件中的id计数实际上不计算元素的id计数,则可能会出现问题。但是,如果这是一个具有多个用户的应用程序,您可能正在进行竞争条件区域,因为如果在其他人仍在工作的情况下将任何内容写入磁盘,您可能无法始终获得准确的计数。您可能希望将计数缓存在简单的文本文件中。

答案 3 :(得分:0)

好吧,我不会帮助你,但我会给你建议:就是不要。与例如SQLLite相比,XML非常慢。你为什么想要XML?

答案 4 :(得分:0)

我将在这里反对,并说使用平面文件数据库没有错误,在这种情况下是XML

这是优点和缺点,并且对于许多人来说,处理并且给出建议平面文件是一个不好的方法,这些都是压倒性的。这是一种错误,而不是这种概括。 更具建设性的方法是指出缺点而不是谴责平面文件作为选项。

平面文件数据库有一些成功的实现,例如基于getsimple XML的CMS。我想你可能能够解决这些代码,并了解他们正在使用XML做什么。

我认为,当需要更简单的东西时,会使用sql数据库。一个Sql数据库也没有损坏或破解,它总是归结为实现。