识别CSS选择器字符串与XPath字符串

时间:2019-04-14 22:27:35

标签: javascript html css xpath

我正在为html编写一个小型查询模块(在js中),我想提供一个通用的query(selector)函数,同时支持css选择器和XPath选择器作为字符串参数。

不管如何进行每种选择,这里的问题都是如何识别给定的字符串是xpath还是css选择器。我们可以假设函数是这样的:


function query(selector){
   selectorKind = identifySelectorKind(selector); // I want to know how to code this particular function

   if(selectorKind==="css") return queryCss(selector);
   if(selectorKind==="xPath") return queryXPath(selector); //Assume both functions exists and work
}

我的第一种方法(鉴于我对xPath查询的了解有限)是通过检查第一个字符是否为/来确定查询类型(这里我假设所有相关的xPath查询都以/开头)

因此,identifySelectorKind会像这样:

function identifySelectorKind(selector){
    if (selector[0] === "/") return "xPath";
    else return "css";
}

请注意,我不需要验证css或xpath选择器,我只需要一种明确的方法来区分它们。这种逻辑就足够了吗? (换句话说,所有xPath选择器都以/开头,而没有css选择器以相同的方式开始吗?)如果不是,是否有更好的方法或我可能想知道的一些注意事项?

2 个答案:

答案 0 :(得分:1)

不一定。例如,*是有效的xpath和有效的CSS选择器,但与每个元素中的一组不同的元素匹配。

答案 1 :(得分:0)

如果您完全确定XPath选择器将始终以$CI = &get_instance; $CI->db->get(...); 开头,那么可以。请注意,XPath选择器不必以/开头,但是如果您总是从根目录中选择,则可以。