Xpath,在“之后获取子字符串”;“已关闭”;结束时html标记/结束节点
我想从他们的武器开始,提取关于凡人快击球员的信息 示例代码:Xpath,在“之后获取子字符串”;“已关闭”;结束时html标记/结束节点,xpath,Xpath,我想从他们的武器开始,提取关于凡人快击球员的信息 示例代码: <ul class="characterInfo"> <li>Name: <b> <span>Lui Kang</span></b></li> <li>Created by: <b><span>John Tobias</span></b></li> <li>Battl
<ul class="characterInfo">
<li>Name: <b> <span>Lui Kang</span></b></li>
<li>Created by: <b><span>John Tobias</span></b></li>
<li>Battle cry: <b><span><a href="/sound/mortalkombat/luikang"><u>Click here</u></a></span></b></li>
<li>Weapons: <b><span>Dragon sword and nunchaku</span></b></li>
<li>Origin: <b><span>China</span></b> </li>
</ul>
所以我没有按照正确的方式使用子字符串。我应该用第一个
-节点结束提取
我尝试了子字符串before(子字符串before)(,'wearms:'),'/span')
,但它没有返回任何内容
我想我很接近了,有人能告诉我正确的方向吗?XPath处理文档的XML结构,而不是原始文本。如果要提取的文本始终位于
元素中,则可以使用:
string(//ul[@class = 'characterInfo']/li[starts-with(., 'Weapons:')]/b)
以下内容更具普遍性:
substring-after(//ul[@class = 'characterInfo']/li[starts-with(., 'Weapons: ')], 'Weapons: ')
为什么要匹配文本HTML文本而不是选择所需的元素?武器元素(本例中为li[4])并不总是位于第四位。这并不能回答我的问题。您仍然不想尝试选择文本HTML标记。在计算XPath表达式时,文本HTML字符串已转换为表示原始源文档的抽象节点树,XPath操作的正是该表示。Oops,没有看到您的帖子弹出。同样的答案。删除我的+1Hm,我在两个示例中都得到了[无效的XPATH表达式]。是的,我在两个表达式中都有一些错误。固定和验证。
substring-after(//ul[@class = 'characterInfo']/li[starts-with(., 'Weapons: ')], 'Weapons: ')