您可以在https://sabbiobet.netsons.org/test.html上找到我的测试html页面
这是页面的html标记:
<table border="1" class="class_table">
<tbody>
<tr class="class_tr">
<td class="class_td"> </td>
</tr>
<tr class="class_tr">
<td class="class_td"><span class="class_span_ok"></span>square</td>
</tr>
<tr class="class_tr">
<td class="class_td"><span class="class_span_ko"></span>circle</td>
</tr>
<tr class="class_tr">
<td class="class_td"><span class="class_span_ok"></span>triangle</td>
</tr>
</tbody>
</table>
我需要获取<td>
中class="class_td"
中的所有文本,减去文本为空或
或孩子<span>
中带有{{1}的文本}。
换句话说,我只想获得这些值:
class="class_ko"
使用Google表格的importXML函数,并按照我尝试过的其他用户的建议进行操作:
Square
Triangle
但是它只有在我在“ span”和“ / span”之间放置一些文本时才有效
没有任何文字,我只会得到一个空的结果。
有人可以帮我吗?
答案 0 :(得分:0)
如果将提供的格式不正确的文档更正,请用等价的字符实体引用>>> step_1
['Gourds', 'watermelon', 'Post', 'pounder', 'calf', 'hay', 'or',
'duck', 'is', 'tool', 'shed', 'horse', 'In', 'eggplant', 'quonset',
'is', 'grain', 'bins', 'grain', 'trucks', 'quonset', 'pole', 'shed',
'with', 'fences', 'gates', 'zucchini', 'carrots', 'scrap', 'metal',
'Peacocks', 'baa', 'ostriches', 'owls', 'Kidney', 'beans', 'ostrich',
'trucks', 'Gourds', 'utters', 'at', 'welding', 'equipment', 'a',
'oink', 'oink', 'haybine', 'Apples', 'ducks', 'straw', 'quail', 'a',
'ostriches', 'donkey', 'hay', 'hook', 'cucumbers', 'Kidney', 'beans',
'ostrich', 'trucks', 'Combine', 'Harvester', 'swather', 'baler', 'as',
'haybine', 'parsley', 'melon', 'in', 'ha.\n']
替换未定义的实体
:
 
然后这个XPath表达式:
<table border="1" class="class_table">
<tbody>
<tr class="class_tr">
<td class="class_td"> </td>
</tr>
<tr class="class_tr">
<td class="class_td"><span class="class_span_ok"></span>square</td>
</tr>
<tr class="class_tr">
<td class="class_td"><span class="class_span_ko"></span>circle</td>
</tr>
<tr class="class_tr">
<td class="class_td"><span class="class_span_ok"></span>triangle</td>
</tr>
</tbody>
</table>
在评估时,会精确选择所需的/*/*/*/td
[@class='class_td'
and not(span[@class='class_span_ko'])
and normalize-space(translate(., ' ', ''))
]/>
元素:
td
基于XSLT的验证
此转换对上面的XPath表达式求值,并将所选元素复制到输出:
<td class="class_td">
<span class="class_span_ok"/>square</td>
<td class="class_td">
<span class="class_span_ok"/>triangle</td>
产生了所需的正确结果:
<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=
"/*/*/*/td
[@class='class_td'
and not(span[@class='class_span_ko'])
and normalize-space(translate(., ' ', ''))
]"/>
</xsl:template>
</xsl:stylesheet>
注意:
如果仅需要所需元素的字符串值,则XPath表达式可以是:
<td class="class_td">
<span class="class_span_ok"/>square</td>
<td class="class_td">
<span class="class_span_ok"/>triangle</td>