XPATH节点获取

XPATH节点获取,第1张

xpath获取同级节点

XPath轴(XPath Axes)可定义某个相对于当前节点的节点集:

1、child 选取当前节点的所有子元素

2、parent 选取当前节点的父节点

3、descendant 选取当前节点的所有后代元素(子、孙等)

4、ancestor 选取当前节点的所有先辈(父、祖父等)

5、descendant-or-self 选取当前节点的所有后代元素(子、孙等)以及当前节点本身

6、ancestor-or-self 选取当前节点的所有先辈(父、祖父等)以及当前节点本身

7、preceding-sibling 选取当前节点之前的所有同级节点

8、following-sibling 选取当前节点之后的所有同级节点

9、preceding 选取文档中当前节点的开始标签之前的所有节点

10、following 选取文档中当前节点的结束标签之后的所有节点

11、self 选取当前节点

12、attribute 选取当前节点的所有属性

13、namespace 选取当前节点的所有命名空间节点

如:要定位当前td同级后的一个td

//td[='text']/following-sibling::td

这个你可能需要一些辅助方法,来帮助定位元素,因为在dom中事件是冒泡的形式到document对象上的,而srcElement一直指向的是当时发生事件的元素,只要一直选择这个元素的父亲元素,就可以匹配到你想要的元素了,比如

<table id="test1">

  <tbody>

    <tr>

      <td>click me (#test1)</td>

    </tr>

  </tbody>

</table>

<table id="test2">

  <tbody>

    <tr>

      <td>click me (#test2)</td>

    </tr>

  </tbody>

</table>

js:

documentonclick = function(e){

  e = e || windowevent;

  src = etarget || esrcElement;

  var table = parents(src , 'table');//这样可以拿到当前点击的这个元素的table

  var tr = parents(src , 'tr');//这样拿到当前点击的元素的父亲(tr);

  alert(tableid);//table的id

}

//查找父节点

function parents(el , parentName){

  var parent = elparentNode;

  if(!parent)return null;//如果根本就没有父节点,那么返回null

  

  do{

    if(parenttagNametoLowerCase() == parentNametoLowerCase()){

      //如果这个就是想要找的节点,就返回这个

      //在jq的校验里还可以校验class名称和其它的属性校验等

      //这个简化版就直接校验标签名称

      return parent;

    }

  }while(parent = parentparentNode);//递归一直查找父亲的父亲。。

  

  return null;//如果没有找到,也返回null

}

XPath的语法    我们在前面已经提到过 XPath是用来帮助XSLT在XML源文档中查找定位信息的语言 在实际使用过程中 XPath和XSLT总是混在一起使用 在上面一章的语法例子中我们已经有使用到XPath的语法 只是没有明确点出 但W C将它们分成两个标准 所以我们也将它们拆成两章来讲解

XPath的语法

当前位置    寻址 *** 作    运算符    功能函数

当前位置

当我们使用XSLT处理XML源文档是 我们用Context来表示当前正在被模板处理的节点位置 比如xsl:template match= / 语句中表示Context在文档的根(root)节点 我不知道如何准确的翻译Context这个词 它类似于C语言里的指针 表示程序当前运行的位置 理解Context对于正确处理XSL模板非常重要 当您的XSL模板输出的文档和您想要的不一样 最先应该分析的就是Context在哪里     Location Paths是用于设定你想要寻找的Context节点位置 就类似DOS的目录命令 我们看个例子

<xsl:for each select= child::PEOPLE/descendant::PERSON >

其中child::PEOPLE/descendant::PERSON就是XPath语法 这个表达式就是一个Location Paths 代码说明要显示所有PEOPLE元素的子元素和所有PERSON元素的子元素 通常我们会采用更简单的写法

<xsl:for each select= PEOPLE//PERSON >

我们来解释path的两种表示方法 / 和 //     / 是表示当前文档的节点 类似DOS目录分割符 例如 /PEOPLE表示选择根节点下的PEOPLE元素 PEOPLE/PERSON表示选择PEOPLE元素下所有的PESON子元素     // 则表示当前文档所有的节点 类似查看整个目录 例如 //PEOPLE表示选择文档中所有的PEOPLE元素 无论它在什么层次 PEOPLE//PERSON表示在PEOPLE元素下所有的PERSON元素 无论它的层次多深

寻址 *** 作

Axis和Predicate是XPath语法中对Location Paths进行定位 *** 作的语法 具体的用法列表如下

Axis语法表        表达式 简写 说明        self 选择当前的节点     例子 :    <TD><xsl:value of select= /></TD>    代码表示在当前位置插入当前的节点包含的文本(text)值         parent 选择当前节点的父节点         attribute @ 选择一个元素的所有属性     例子:    <TD><xsl:value of select= @PERSONID /></TD>    选择PERSON元素的所有属性         child 选择当前节点的所有子元素         ancestor 选择当前节点的所有父元素(包括父元素的父元素 类推)   

Axis帮助我们选择当前节点周围所有的节点 而Predicate则用来定位当前节点内部的元素 表示方法为方括号[]中加表达式 [ Expression ] 具体举例如下:

PERSON[position()= ]    这句代码表示寻找第二个 PERSON 元素

PERSON[starts with(name B )]    这句代码表示寻找所有名称以 B 开头的PERSON元素

运算符

这一节介绍XPath的运算符(Expressions) 列表如下         运算符 说明        and or 就是普通意义的and or        = 等于        != 不等于        > >= 大于 大于等于        < <= 小于 小于等于 注意 在XSL文件中 <符号要用< 表示        div 加减乘除        mod 取模        | 两个节点一起计算   

功能函数(Functions)

在XPath里有很多功能函数可以帮助我们精确寻找需要的节点

count()功能    作用 统计计数 返回符合条件的节点的个数     举例 <p><xsl:value of select= count(PERSON[name=tom]) /></p>    说明 代码的用途是显示PERSON元素中姓名属性值为tom有几个

number()功能    作用 将属性的值中的文本转换为数值     举例 <p>The number is: <xsl:value of select= number(book/price) /></p>    说明 代码的用途是显示书的价格

substring() 功能    语法 substring(value start length)    作用 截取字符串     举例 <p><xsl:value of select= substring(name ) /></p>    说明 代码的用途是截取name元素的值 从第一个字母开始显示到第三个

sum()功能    作用 求和     举例 <p>Total Price = <xsl:value of select= sum(//price) /></p>    说明 代码的用途是计算所有价格的和

上面这些功能只是XPath语法中的一部分 还有大量的功能函数没有介绍 而且目前XPath的语法仍然在不断发展中 通过这些函数我们可以实现更加复杂的查询和 *** 作

lishixinzhi/Article/program/ASP/201311/21862

你的意思是点击Button删除表格的一行信息!

首先在方法开始的时候获得整个表格的dom信息

然后在用this传值到方法中获得当前行的信息

最后用获取到的表格deleterow(获取到的行的值);

参考代码:

function Remove(fontobj){

var obj=$('#myTable');

var n=fontobjparentNodeparentNodeparentNoderowIndex;

objdeleteRow(n);

}

不太明白你要问的问题是什么,但是var td_="";var tr_="";这两个是定义的变量,因为js是弱类型语言,所以修饰变量的不会是int或是String或是其他的,只会是var

selectjsp,在addjsp上面有一个请选择按钮,点击请选择按钮后,d出selectjsp页面,这个页面上是从数据库中遍历的企业,选中一条数据,点击确认,selectjsp页面关闭,并将结果带到addjsp请选择前面的文本框里面。

但name里的对象里要包含一个list,一般像你这种table的在后台肯定返回的是list集合把,所以用logic标签循环显示就行的 。

&ltlogiciterate id这里的名字是随意 只是在下面调用而已aList name后台返回给前台的对象比如page propertylist这里必须是list因为表示循环对象是list集合类型的indexId,indx&gt。

&lttr class=ChangeLineColor height20&gt;。

&lttd align=center&gt;&lt%=indx+1%&gt&lt/td&gt。

&lttd&gt,aListproductCode&lt,td&gt,alist。要的字段名字。

&lttd&gt,aListfstCustomerName&lt,td&gt。

至于你是返回的直接是一个对象包含list集合的还是直接一个list,看你自己情况,改就行的。

以上就是关于XPATH节点获取全部的内容,包括:XPATH节点获取、JS问题event.srcElement.tagName.toLowerCase() == "td"、XPath语法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9453892.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存