是否可以在XML文件中使用查询字符串?
我认为不可能,然后我看到了这样的网址http://site.com/file.xml?tag=howdoiusethis
我可以想到很多方法可能会有用,但对我来说这是一个新概念,我没有找到有关如何在文档中使用此标记/查询字符串的任何信息。理想情况下,我想用它来过滤掉文档中可读取的给定标记/查询字符串的xml。
由于
答案 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
。