在XML文件中使用查询字符串

时间:2011-02-10 17:34:03

标签: xml

是否可以在XML文件中使用查询字符串?

我认为不可能,然后我看到了这样的网址http://site.com/file.xml?tag=howdoiusethis

我可以想到很多方法可能会有用,但对我来说这是一个新概念,我没有找到有关如何在文档中使用此标记/查询字符串的任何信息。理想情况下,我想用它来过滤掉文档中可读取的给定标记/查询字符串的xml。

由于

3 个答案:

答案 0 :(得分:2)

虽然它是一个XML文件,但它很可能是一个由服务器端语言解析的文件(通过处理程序,.htaccess赋值(例如AddType application/x-httpd-php .xml)或其他方式)

只要服务器知道XML类型的文件(在这种情况下)需要通过解析器,任何服务器端语言(如PHP,ASP)都可以处理该文件并输出有效的XMl文档(使用查询字符串),它看起来好像是普通文件。

这方面的一个很好的例子是.rss文件。它们是具有经典扩展的动态内容,但服务器端正在呈现信息,因为它变得可用。


例证。假设您在服务器上运行PHP。您有一个名为“feeds”(/ public_html / feeds /)的目录,其中包含XML Feed。在该目录中,您创建一个名为 .htaccess 的文件,并告诉apache需要将.XML扩展名发送到PHP处理引擎:

AddType application/x-httpd-php .xml

然后,在同一目录中,您有 stories.xml ,它根据数据库信息生成内容列表,每个查询始终从服务器呈现最新信息。此文件可能如下所示:

<?php
  // this tells the client what kind of document this is
  header('Content-Type: application/xml');

  // pseudo database connection
  include_once('db.php');

  // setup the header:
  echo '<?xml version="1.0" encoding="utf-8"><stories>';

  // pseudo story-gatherer
  $stories = Stories::Fetch($_GET['filter_by']); // use of a GET variable
  foreach ($stories as $story){
    echo '<story>'
          .'<author>'.$story['author'].'</author>'
          .'<title>'.$story['title'].'</title>'
          .'<date>'.$story['date'].'</date>'
        .'</story>';
  }

  // close the file
  echo '</stories>';
?>

现在你有一个以.XML结尾的文件,并通过GET变量(可通过http://mysite.com/feeds/stories.xml?filter_by=Brad+Christie访问)进行过滤。对于用户来说,它看起来只有这样:

<?xml version="1.0" encoding="utf-8">
<stories>
  <story>
    <author>Brad Christie</author>
    <title>Making .XML render dynamic content</title>
    <date>2011-02-10 12:52:00</date>
  </story>
</stories>

非常原始的例子,但只是显示概念不正确的编码风格。 ; - )

答案 1 :(得分:0)

在您给出的示例中,幕后有一个URL重写机制,它将此请求委托给某个控制器,该控制器使用XPath或简单的XML处理和搜索来查询给定文件。

您可以从这里开始:http://www.w3schools.com/xpath/xpath_intro.asp

然后为您选择的编程语言找到XPath处理工具。

答案 2 :(得分:0)

不,tag变量在XML中不可用。如果是,你就无法处理它,因为XML只是一种数据格式;它本身不会任何事情。

当构建对HTTP请求tag的响应时,Web服务器可以使用GET /file.xml?tag=howdoiusethis及其值。该响应的.xml部分是客户端(浏览器)发送回XML的线索,但服务器上不需要file.xml。服务器可以使用您想要的信息/file.xml执行任何操作,tag设置为howdoiusethis