小编dxr*_*rsm的帖子

XML作为PHP应用程序的数据层

我想知道如何为一个相当简单的php网站编写XML数据层.原因是:

  1. 数据库服务器不可用.
  2. 可以用xml表示的简单数据模式.
  3. 我喜欢拥有自包含应用程序的想法,没有服务器依赖性.
  4. 我可能想将它抽象为一个小框架,以便在其他项目中重用.

该模式类似于一个简单的图书目录,其中包含一些查找表和i18n.因此,表达起来非常简单.

主xml文件的大小在100kb到15mb的范围内.但它可能会在某种程度上增长到~100mb.

我实际上正在考虑扩展我的模型类来处理xml数据.目前我使用XMLReader和SimpleXml的组合来获取数据,如下所示:

public function find($xpath){            

    while($this->xml_reader->read()){

        if($this->xml_reader->nodeType===XMLREADER::ELEMENT && 
           $this->xml_reader->localName == 'book' ){


            $node = $this->xml_reader->expand();
            $dom = new DOMDocument();
            $n = $dom->importNode($node, true);
            $dom->appendChild($n);
            $sx = simplexml_import_dom($n); 


            // xpath returns an array

            $res = $sx->xpath($xpath);

            if(isset($res[0]) && $res[0]){

                $this->results[] = $res;                        
            }
    }

    return $this->results;
}
Run Code Online (Sandbox Code Playgroud)

因此,我不是将整个xml文件加载到内存中,而是为每个部分创建一个SimpleXml对象,并对该对象运行xpath查询.该函数返回SimpleXml对象的数组.对于保守搜索,我可能会破坏第一个找到的项目.

我要问的问题是:

  1. 您是否认为这是一个可行的解决方案,即使对于大中型数据存储也是如此?
  2. 在PHP中处理XML时,是否需要记住任何注意事项/模式?
  3. 以上代码是否适用于大文件(100mb)?
  4. 可以低开销的方式处理大型xml文件中的插入和更新吗?
  5. 您是否建议使用其他数据格式作为更好的选择?

php xml

4
推荐指数
1
解决办法
568
查看次数

如何禁用jstree中的选定节点?

如何禁用所选节点的默认操作?

当用户选择节点时,该节点不应该是可点击的,直到选择了另一个节点.

这是一个非常常见的功能,但我似乎无法使其工作.

问候

季米特里斯

jstree

3
推荐指数
1
解决办法
7260
查看次数

标签 统计

jstree ×1

php ×1

xml ×1