- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
鉴于此示例文档片段:
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:zuq="http://localhost/~/zuqml">
<head></head>
<body>
<zuq:data name="a" />
<div>
<zuq:data name="b" />
</div>
<div>
<zuq:data name="c">
<zuq:format type="trim">
<zuq:param name="length">300</zuq:param>
<zuq:param name="append">
<span>
<zuq:data name="d" />
</span>
</zuq:param>
</zuq:format>
</zuq:data>
</div>
<div>
<zuq:data name="e">
<zuq:format type="trim">
<zuq:param name="length">300</zuq:param>
<zuq:param name="append">
<span>
<zuq:data name="f" />
</span>
</zuq:param>
</zuq:format>
</zuq:data>
</div>
</body>
</html>
我正在尝试获取 <zuq:data />
要操作的节点,但按一定顺序:最深的第一个。
我目前已经做到这一点:
$nodeList = $xpath->query('.//zuq:data[not(ancestor::zuq:region)]');
foreach($nodeList as $node){
$nodeOrder[] = Array($xpath->evaluate('count(ancestor::*)', $node) => $node->getAttribute('name'));
}
print_r($nodeOrder);
这当然会吐出这样的内容:
Array
(
[0] => Array
(
[2] => a
)
[1] => Array
(
[3] => b
)
[2] => Array
(
[3] => c
)
[3] => Array
(
[7] => d
)
[4] => Array
(
[3] => e
)
[5] => Array
(
[7] => f
)
)
现在我正在考虑只使用 array_multi_sort()
或usort()
订购 DOMNode
如果我要继续我当前的“解决方案”,则需要操纵对象。然而,在我看来,有人可能知道一种更有效的方法来解决这个问题。
有什么想法吗?
<小时/>注意:对于其他不必要的实现细节,我的 XPath 查询字符串所做的超出了此处相关的范围。我刚刚将这个例子从我目前所在的位置拼凑起来。
最佳答案
我最终选择了 usort()
DOM 树的操作变得越来越复杂,因此需要一个回调函数。
关于php - 按节点深度对 DOMXPath 查询结果排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4731466/
如何在不再次查询整个文档的情况下查询子元素的 xpath 结果? 我查询我的文档以找到最后一个 同类menu-item : $doc = new DomDocument(); @$doc->loadH
正在尝试确定哪个更适合我的用例... 对比了这些方法的文档,我模糊的理解是evaluate返回类型化结果但 query没有。此外,query示例包括遍历许多结果,但 evaluate示例假定单一类型的
我面临一个我无法解决的问题。我正在使用 DOMXPath检索 MsgId 的值以下 XML 文件的标记: Test/20171013/CCT10
我这里有一些例子: Mortal Combat: A very good gamenbsp; Call of Duty: Don't buy this game. Street Fighte
到目前为止,我的代码正在使用 xPath 查询获取所有类“forumRow”。如何获得在每个“forumRow”类中存在一次的 a 元素的 href 属性? 我有点卡在我可以从第一个查询的结果开始运行
XML 文件: Root element 4 1 5 3 6
我有这段代码并使用 DOMXPath 删除给定的 td $html = file_get_contents('WebProxy.html'); $xml = new DOMDocument(); $x
我正在使用 DOMDocument/DOMXPath 尝试使 CSS 内联。它会完美地工作,除非我传递给它的 HTML 使它出错,说它不是有效的 XML。 如何设置这些函数来忽略未知标签? 无论如何,
我昨天问了这个问题,当时这正是我所需要的,但是在处理一些实时数据时我发现它并没有完全按照我的预期进行。 Parse HTML with PHP's HTML DOMDocument 它从 HTML 页
假设我有这个: CCC sometexthere AAA sometext DDD something 现在,我想获取 baz 值,它紧跟在
当我想用 XPath 打印计算表达式的结果时出现错误。 $url = $xpath->evaluate('//a/@href', $event);回显 $url ; 我有这个错误:可捕获的 fatal
我有这个 HTML 代码: Hello World 我这样做:$res = $xpath->query(//div[@class='lvlone']/div[@
我有以下html表格结构
我有以下结构: ... ... 问题:基于“输入”标签的“名称”属性选择该tr的表达式是什么?更具体地说,我想知道是否有一种方法,而不必选择输入,然后执行-> parentNode->
当前结构看起来像 //more html //more html //more html //more html
我一直在尝试编写一个 PHP 脚本来使用 DOMXPath 解析 XML 文档。 ;然而我似乎遗漏了一些东西,因为我的 XPath 查询都没有返回任何内容。因此,我尝试淡化我的脚本来尝试解析一个非常基
鉴于此示例文档片段: 300
我使用 DOMXPATH 从 p 标记中删除所有 属性,并且工作正常, // Loop all p. foreach( $dom->getElementsByTagName( "p" ) as $p
我有一段 HTML 代码: Submit 如何在 PHP 中使用 DOMXPath 提取隐藏输入的值?我试过这样的事情: //$site - the html code $doc = n
伙计们,我正在解析 URL 以获取 HTML dom 元素。 这是我的代码: loadHTMLFile($url); $xp = new DOMXPath($dom); $qry = '//scrip
我是一名优秀的程序员,十分优秀!