我是一名游戏作家和设计师,我们使用 XML 文件作为对话引擎。我正在尝试在网站上显示对话供我的团队查看,并且我希望能够基于 URL 变量动态显示 XML 的某些部分或“章节”。我为此使用 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>
我想做的是显示特定 dialogue
的行基于我通过 URL 传递的变量进行 block 。这是到目前为止我的 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
我将通过 ?c=
得到的变量在 URL 中,我只是不知道从那里该做什么。我会对此代码执行什么操作以仅显示 <dialogue id="1">
中的行基于?c=1
在网址中?
最佳答案
尝试使用xpath;它是为这种情况而设计的。以下是如何获取每一行对话的示例。
foreach ($xml->xpath("//dialogue[@*])/line") as $line)
echo $line;
这是一个有用的引用来源 https://developer.mozilla.org/en-US/docs/Web/XPath
关于php - 使用 PHP 和 URL 变量动态显示 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29733812/