栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Xpath转换在Java中不起作用

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Xpath转换在Java中不起作用

这不是有效的xpath表达式,无法在表达式内部声明名称空间前缀。

samlp:AuthnRequest/UserID xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"

XPathFilterParameterSpec确实有另一个构造函数,该构造函数允许指定名称空间前缀的映射,您可以尝试以下表达式:

new XPathFilterParameterSpec("samlp:AuthnRequest/UserID",    Collections.singletonMap("samlp", "urn:oasis:names:tc:SAML:2.0:protocol"))

编辑:

该消息似乎不是错误,请参见此处的第426行,但其日志级别可能应低于INFO。

我也看了一下xpath过滤的描述:

对于输入节点集中的每个节点,将对XPath参数中出现的XPath表达式进行一次评估。结果转换为布尔值。如果布尔值为true,则该节点包含在输出节点集中。如果布尔值为false,则从输出节点集中省略该节点。

因此,仅包含

UserID
签名中的正确xpath表达式将是
self::UserID
。但是不要问我,这对于xml签名是否真的有意义。规范中的示例似乎使用xpath表达式来包含除签名元素本身之外的所有内容:

not(ancestor-or-self::dsig:Signature)

编辑2:

正确的表达实际上是

ancestor-or-self::UserID
因为过滤器还必须包括该节点的文本子
UserID
节点。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/496303.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号