使用 PHP 和 URL 变量动态显示 XML
Displaying XML dynamically using PHP and URL variables
我是一名游戏作者和设计师,我们使用 XML 文件作为我们的对话引擎。我正在尝试在网站上显示对话供我的团队查看,我希望能够基于 URL 动态显示 XML 的某些部分或 'chapters' ] 多变的。我为此使用 PHP。
这是一个非常简单的示例,说明我们的 XML 是如何构建的:
<dialogues>
<dialogue id="0">
<line id="0_1" name="John">Line 1</line>
<line id="0_2" name="Eric">Line 2</line>
<line id="0_3" name="Ben">Line 3</line>
</dialogue>
<dialogue id="1">
<line id="1_1" name="Sarah">Line 1</line>
<line id="1_2" name="Jessica">Line 2</line>
<line id="1_3" name="Kelly">Line 3</line>
</dialogue>
</dialogues>
我想做的是根据我通过 URL 传递的变量显示特定 dialogue
块的行。到目前为止,这是我的 PHP。
$url = "dialogues.xml";
$xml = simplexml_load_file($url);
$chapter = $_GET['c'];
foreach($xml->dialogue->line as $dialogue)
{
echo '<p class="id">id: ' . $dialogue["id"] . '</p>';
echo '<p class="name">' . $dialogue["name"] . '</p>';
echo $dialogue."<br/>";
}
所以你可以看到我有一个 $chapter
变量,我可以在 URL 中用 ?c=
得到它,我只是不知道从那里做什么.我会对这段代码做些什么来只显示 <dialogue id="1">
中基于 URL?
中的 ?c=1
的行
尝试使用 xpath;它是为这种情况而设计的。下面是如何获取每行对话的示例。
foreach ($xml->xpath("//dialogue[@*])/line") as $line)
echo $line;
这是一个有用的参考资源 https://developer.mozilla.org/en-US/docs/Web/XPath
我是一名游戏作者和设计师,我们使用 XML 文件作为我们的对话引擎。我正在尝试在网站上显示对话供我的团队查看,我希望能够基于 URL 动态显示 XML 的某些部分或 'chapters' ] 多变的。我为此使用 PHP。
这是一个非常简单的示例,说明我们的 XML 是如何构建的:
<dialogues>
<dialogue id="0">
<line id="0_1" name="John">Line 1</line>
<line id="0_2" name="Eric">Line 2</line>
<line id="0_3" name="Ben">Line 3</line>
</dialogue>
<dialogue id="1">
<line id="1_1" name="Sarah">Line 1</line>
<line id="1_2" name="Jessica">Line 2</line>
<line id="1_3" name="Kelly">Line 3</line>
</dialogue>
</dialogues>
我想做的是根据我通过 URL 传递的变量显示特定 dialogue
块的行。到目前为止,这是我的 PHP。
$url = "dialogues.xml";
$xml = simplexml_load_file($url);
$chapter = $_GET['c'];
foreach($xml->dialogue->line as $dialogue)
{
echo '<p class="id">id: ' . $dialogue["id"] . '</p>';
echo '<p class="name">' . $dialogue["name"] . '</p>';
echo $dialogue."<br/>";
}
所以你可以看到我有一个 $chapter
变量,我可以在 URL 中用 ?c=
得到它,我只是不知道从那里做什么.我会对这段代码做些什么来只显示 <dialogue id="1">
中基于 URL?
?c=1
的行
尝试使用 xpath;它是为这种情况而设计的。下面是如何获取每行对话的示例。
foreach ($xml->xpath("//dialogue[@*])/line") as $line)
echo $line;
这是一个有用的参考资源 https://developer.mozilla.org/en-US/docs/Web/XPath