tDOM中如何忽略命名空间解析并选择带前缀的HTML/XML节点?
解决tDOM忽略命名空间匹配节点的问题
使用XPath的
local-name()函数:这是最可靠的方案,直接匹配标签的本地名称(去除命名空间前缀后的部分),完全不受前缀和命名空间URI的影响。
示例代码:# 假设已完成HTML解析,得到dom对象$dom # 匹配所有div节点 set div_nodes [$dom selectNodes {//*[local-name()='div']}] # 精准匹配html/body层级下的div节点 set body_div_nodes [$dom selectNodes {//*[local-name()='html']/*[local-name()='body']/*[local-name()='div']}]关于之前方法无效的原因:
-ignorexmlns参数仅作用于无前缀的默认命名空间,而你的HTML中是带a0:前缀的显式命名空间,因此该参数无法生效。- tDOM文档中的
%语法主要用于简化默认命名空间的查询,同样不适用于带显式前缀的命名空间场景。
内容的提问来源于stack exchange,提问作者Gary
相关产品推荐
相关产品推荐

