从Xpath表达式中删除命名空间

时间:2012-03-19 15:52:56

标签: regex xpath

我需要一种从XPath表达式中删除命名空间的方法,例如,如果它是这样的:

/ns1:ElementOne/ElementTwo/ns2:ElementThree

它应该成为

/ElementOne/ElementTwo/ElementThree

命名空间在XPath中可能不同(上例中的ns1,ns2),并且可以在Xpath的开头应用,例如

ns3:ElementFour

正则表达式?有什么想法吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

regex bellow与名称空间格式匹配:

[\w]+:

编辑:

对于祖先部分,您可以使用更新的正则表达式:

[\w]+:(?!:)

所以最终解决方案执行以下操作:它搜索前面提到的结构,其中包含所有字母数字+下划线字符串格式,后跟一个':'字符,后面跟不是第二个':'字符。希望这会有所帮助。

答案 1 :(得分:0)

我不知道xpath名称的格式,但xml规范对我来说似乎很模糊冒号的应用程序作为命名空间分隔符与处理器必须接受的有效名称字符。虽然冒号只能用作命名空间分隔符。

因此,减去unicode代码点验证 -

匹配最后一个冒号:

[A-Za-z_:][\w:.-]*(?<=:)

匹配第一个冒号:

(?:[A-Za-z_][\w.-]*|):