dongpo2014 2012-05-06 18:31
浏览 122
已采纳

通过xpath选择多个索引的更好方法

I try to select multiple "td" inside "tr" in a complicated table structure.

$name = $sxml->xpath("
                //table[@cellspacing=0 and @cellpadding=2 and @class='mn2']
                    /tr[not(contains(@class, 'mn'))]/td[2] 
                | 
                //table[@cellspacing=0 and @cellpadding=2 and @class='mn2']
                        /tr[not(contains(@class, 'mn'))]/td[5]
                |
                //table[@cellspacing=0 and @cellpadding=2 and @class='mn2']
                        /tr[not(contains(@class, 'mn'))]/td[7]
                ");

everything is working fine, and i get what i want, but this seems a bit overkill. How can i select multiple "td" like this "td[2,5,7]" instead of using Union expression "|" ?

  • 写回答

1条回答 默认 最新

  • duan0504 2012-05-06 18:40
    关注

    It can be done with the help of or:

    //table[@cellspacing=0 and @cellpadding=2 and @class='mn2']
        /tr[not(contains(@class, 'mn'))]/td[position()=2 or position()=5 or position()=7] 
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?