使用 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