首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将数据库读入XML并进行检索

将数据库读入XML并进行检索
EN

Stack Overflow用户
提问于 2011-08-31 23:39:40
回答 4查看 101关注 0票数 0

我有一个数据库表与图书的详细信息,并希望用户搜索它。但是,我被告知可以将页面加载的所有数据读取到XML中,并允许在XML上执行搜索,而不是重复往返于数据库。我的问题是,这是可能的吗?

我的表结构是这样的:

代码语言:javascript
运行
复制
===============================================================
|  id    | name     | pages  |  category  | date | publisher  |
===============================================================

以前有没有人做过这样的事情?

任何建议都将不胜感激。

EN

回答 4

Stack Overflow用户

发布于 2011-08-31 23:43:23

如果您正在寻找客户端解决方案,XSLT可能会满足您的需求。

票数 0
EN

Stack Overflow用户

发布于 2011-09-01 00:14:29

这只是一个例子--伪代码--你必须测试并重建它

您必须从表中创建xml文件。

代码语言:javascript
运行
复制
$dom = new DOMDocument('1.0', 'utf-8');

    function arr2xml($arr, $el=null)
        {
                    global $dom;  
            foreach ($arr as $key=>$val){           
                $tag_el=$dom->createElement((is_numeric($key) ? 'row' : $key));
                (is_array($val) ? arr2xml($val, $tag_el) : $tag_el->appendChild($dom->createCDATASection($val)));
                (empty($el)) ? $dom->appendChild($tag_el) : $el->appendChild($tag_el);
            }
        }

$result = mysql_query('select * from your table', $mysql_link);
$arr = array();
if ($result !== FALSS && mysql_num_rows($result))
{
  while($row = mysql_fetch_array($result))
   $arr[] = $row;
}
arr2xml($arr);
file_put_contents('tablexml.xml', $dom->saveXml());

///// FOR SEARCH BY category

$dom = new DOMDocument;
$dom->loadXML(file_get_contents('tablexml.xml'));
$xpath = new DOMXPath($dom);
$res = $xpath->query('//row[cotanins(category, $search_value)]');
if ($res->length)
{
 foreach ($res as $el)
 {
   ////////////////
 }
}
票数 0
EN

Stack Overflow用户

发布于 2011-09-01 00:15:04

xpath是你用来做实际搜索的东西。它是一个query language for XML

假设您的数据库文件采用xml格式,如下所示:

代码语言:javascript
运行
复制
<database>
    <book>
       <id>000000</id>
       <name>A Book</name>
       <pages>23</pages>
       <category>Tech</category>
       <date>2011-08-31</date>
       <publisher>Publisher</publisher>
    </book>
    ...
</database>

搜索超过20页的书籍的xpath查询如下

代码语言:javascript
运行
复制
//book[pages > 20]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7259588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档