php - 使用 PHP 和 URL 变量动态显示 XML

标签 php xml url dynamic

我是一名游戏作家和设计师,我们使用 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/

相关文章:

python - 在 ElementTree 中检查 XML 元素是否有子元素

jquery - "Direct link to any fancybox",但地址栏中有 URL

php - 限定 MONTHNAME 中的列

php - 在什么情况下可以在浏览器中查看 PHP 文件的源代码?

php - 如果另一列等于某个字符串,如何在 SQL 查询中选择最高列值

xml - 如何找到包含子字符串的节点?

php - 将 PHP MySql 与 Flex 捆绑在一起提供给客户端

javascript - 在 XSLT 中创建一个简单的模态弹出窗口

javascript - 如何访问未附加到 URL 的散列?

javascript - jQuery 按键事件仅适用于末尾带有# 符号的网址