使用哪种语言来解析xml以进行导航

时间:2011-02-03 21:01:58

标签: php xml xpath

我已经编写了一些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 贾里德

1 个答案:

答案 0 :(得分:0)

值得投资学习XSLT。这是一种人们一见钟情的语言,许多人在掌握它之前就放弃了,但是一旦你怀疑它,它就可以很好地解决这类问题,可以同时用于服务器 - 方和客户方。