我想知道如何为一个相当简单的php网站编写XML数据层.原因是:
该模式类似于一个简单的图书目录,其中包含一些查找表和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对象的数组.对于保守搜索,我可能会破坏第一个找到的项目.
我要问的问题是:
如何禁用所选节点的默认操作?
当用户选择节点时,该节点不应该是可点击的,直到选择了另一个节点.
这是一个非常常见的功能,但我似乎无法使其工作.
问候
季米特里斯