语法结构:如下:
# XPath 基础表达式: /node 表示在xml文档的根目录查找结点名称为node的结点 ./node 表示在当前结点下查找结点名称为node的结点 //node 表示在xml文档中递归查找结点名称为node的节点 //* 表示在xml文档中查询所有的结点,但是排除文本节点 //node() 表示在xml文档中查询所有结点,包含文本节点 //text() 表示在xml文档中递归查找所有的文本节点 //*/text()[contains(., 'test')] 表示在xml文档中递归查找所有结点,条件为该结点的文本节点包含"test" //node[@id] 表示在xml文档中递归查找结点名称为node的结点,条件为该结点必须含有id属性 //node[id] 表示在xml文档中递归查找结点名称为node的结点,条件为该结点必须含有结点名称为id的结点 //nodes[node/id] 表示递归查找nodes结点,条件为nodes结点下必须有node结点,且node结点下必须有id结点 //nodes[@id]/node[id] 表示递归查找含有id属性的nodes结点下的node结点,条件为node结点下必须含有id结点 //nodes[@id]/node[0] 表示递归查找含有id属性的nodes结点下的第一个node结点 //nodes[@id]/node[last()] 表示递归查找含有id属性的nodes结点下的最后一个node结点 //nodes/node[position() < 4] 表示递归查找nodes结点下索引小于4的node结点 //nodes[@id]/node[position() < last()] 递归查找含有id属性的nodes结点下除最后一个结点外的node结点 /nodes/child::node()[name()='node'] 表示查找nodes结点下结点名称为node的子结点 /nodes/child::node 等同于/nodes/node表示查找nodes下的node子结点 /nodes/node/attribute::id 等同于/nodes/node/@id表示查找nodes结点下的node结点的id属性 //nodes[@id='1001']/node[starts-with(@id, '1')] 表示查找id属性为1001的nodes结点下的id属性以1开头的node结点 //@*[ends-with(., '1')] 表示查找以1结尾所有属性 (//* | //@*)[substring(name(), 1, 5) = 'class'] 查找所有结点名称或属性名称的1到5之间的字符等于'class'的结点 //node[@attr!='-2' and @attr!='2'] 查找所有node节点,其attr属性不等于2和-2 # XPath 文档轴用途: self 选择当前节点 parent 选择当前节点的父节点 child 选择当前节点的所有子节点 attribute 选择当前节点的所有属性 ancestor 选择当前节点的所有祖先,包括父节点、父节点的父节点等等 ancestor-or-self 选择当前节点的祖先以及当前节点本身 descendant 选择当前节点的所有后代,包括子节点、子节点的子节点等等 descendant-or-self 选择当前节点的后代以及当前节点本身 preceding 选择整个文档中出现在当前节点前面的所有节点 preceding-sibling 选择文档中出现在当前节点前面的所有同胞节点(即与当前节点同级的节点) following 选择整个文档中出现在当前节点后面的所有节点 following-sibling 选择文档中出现在当前节点后面的所有同胞节点(即与当前节点同级的节点) namespace 选择当前节点的所有名称空间节点
也可以使用浏览器来进行xpath的选择。