我刚刚开始在 php 中使用 XPath 查询,虽然很多都是不言自明的,但如果有可能获得 onclick() 函数的值,我还是会排序。
一个例子
<a id="moreButton" onclick="showMore('#content','/page/2');">Show More</a>
我想出的最好的是//a[@id='moreButton']/@onclick
它返回showMore('#content','/page/2');
我可以进一步细化它以仅返回/page/2
还是只需要使用 php 来解析我所拥有的?
你必须用别的东西来解析它,XPath 不懂 JavaScript
实际上,这可以通过计算以下 XPath 表达式来生成:
对于 onclick
属性中指定的函数的第一个参数:
substring-before(substring-after(/*/@onclick, '('), ',')
对于 onclick
属性中指定的函数的第二个参数:
substring-before(
substring-after(substring-after(/*/@onclick, '('), ','),
')'
)
基于 XSLT 的验证:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
<xsl:copy-of select=
"substring-before(substring-after(/*/@onclick, '('), ',')
"/>
===========
<xsl:copy-of select=
"substring-before(
substring-after(substring-after(/*/@onclick, '('), ','),
')'
)
"/>
</xsl:template>
</xsl:stylesheet>
在提供的 XML 文档上应用此转换时:
<a id="moreButton"
onclick="showMore('#content','/page/2');">Show More</a>
将计算两个 XPath 表达式,并将此计算结果复制到输出中:
'#content'
===========
'/page/2'