XPath获取带命名空间的XML

当XML不带命名空间时,通过XPath获取XML节点很简单,详见w3school

当XML带有(多个)命名空间时:

一、问题及解决

XML文档结构:


根节点Workbook:


如果要读取最后一个Worksheet节点的子节点:


XPath为"//Worksheet[last()]/Table/Row[1]/Cell[1]"时是取不到值的。

这是可以用//*[local-name()=’XXX’]或者./*[name()='xxx']来取值。

举个栗子:

<xsl:template match="//*[local-name()='Workbook']">
//*[local-name()='Workbook']获得的是节点集,其中的节点满足要求:去掉命名空间后的节点名是Workbook


XSL函数:

local-name

该local-name函数返回一个表示给定节点集中第一个节点的本地名称的字符串。

语法:

local-name( [node-set] )
 参数 

node-set (可选的)
将返回此节点集中第一个节点的本地名称。如果省略此参数,将使用当前上下文节点。


Returns
字符串。


Notes
本地名称是扩展名的本地名称。


参考:https://developer.mozilla.org/en-US/docs/Web/XPath/Functions/local-name

https://msdn.microsoft.com/zh-cn/library/ms950779.aspx#EFAA

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值