【问题标题】:Which language to use to parse xml for navigation使用哪种语言来解析 xml 以进行导航
【发布时间】:2011-02-03 21:01:58
【问题描述】:

我已经编写了一些 php 代码来解析一个已经使用 SimpleXML 的 xml 文件,它非常混乱,但如果有帮助的话可以包含。

这就是 xml 文件的样子(导航文件,做得很奇怪,无法更改)

    <root name="menutest">
      <menu>
          <nav name="home" path="index.php" />

          <nav name="menulink1" path="link1.php">
              <nav name="menulink1child1" path="menulink1childlink1.php">
                 <nav name="menulink1child1child1"
                      path="menulink1childlink1childlink1.php" />
              </nav>
          </nav>

          <nav name="menulink2" path="link2.php">
             <nav name="menulink1child2" path="menulink2childlink2.php">
                <nav name="menulink2child2child2"
                     path="menulink2childlink2childlink2.php" />
             </nav>
          </nav>

          <nav name="menulink3" path="link3.php">
             <nav name="menulink3child3" path="menulink3childlink3.php">
                 <nav name="menulink3child3child3"
                      path="menulink3childlink3childlink3.php" />
             </nav>
          </nav>

          <nav name="menulink4" path="link4.php">
             <nav name="menulink4child4"
                  path="menulink4childlink4.php">
                 <nav name="menulink4child4child4"
                   path="menulink4childlink4childlink4.php" />
             </nav>
          </nav>
      </menu>
  </root>

我正在考虑只使用 SimpleXML 来解析和 XPATH 来选择节点,然后使用 $_SERVER 请求使用页面 URL,这样我就可以检测应该打开哪些菜单项以使用正确的 css 样式,例如将样式添加到 nav name="menulink1child1child1. 注意当顶级页面和后续子元素进入该元素的子页面时,应该只选择第 1 层导航元素

 homepage:  home | menulink1 | menulink2| menulink3 | menulink4 | 
 menulink1: menulink1 
            -- childlink1 
            | menulink2 | menulink3 | menulink4

注意菜单是垂直的,而不是水平的,所以子元素需要按照父元素的正确顺序出现,而不是自动出现在网页新行的下方:)

我的问题是;解析需要条件来选择子元素的 xml 导航文件的最佳方法是什么?我应该考虑使用 XSL 来转换 xml 吗?

TIA 贾里德

【问题讨论】:

  • 你研究过 SimpleXML 吗?
  • @Darren 是的,这就是我用来解析 xml 的方法,但是当用户进入网站的某个级别时,我发现很难遍历到正确的节点。
  • @Jared:这个问题不清楚......当然,要进行解析,您需要一个解析器。对于选择,您可以使用 XPath。但是你说的是一个网页,从这个 XML 文档到网页的过程并不清楚。另外,您似乎在询问用于构建菜单的 CSS 规则。
  • @Alejandro 很公平,我会尝试更新它的更好
  • 你试过 PHP DOMDocument 吗?

标签: php xml xpath


【解决方案1】:

学习 XSLT 是值得的。这是一种有些人一见钟情的语言,很多人在掌握它之前就放弃了,但是一旦你对它感到疑惑,它就非常适合这种问题,并且可以同时用于服务器-端和客户端。

【讨论】:

  • 感谢 Michael,过去几天我一直在研究 xsl,我绝对认为这是一种失败的方式,并且作为奖励,它是学习 XML 的新东西。干杯,伙计们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-19
  • 2016-12-21
  • 1970-01-01
  • 1970-01-01
  • 2011-07-17
  • 2012-08-20
  • 1970-01-01
相关资源
最近更新 更多