【发布时间】: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 吗?