我有以下XML文档:
<samlp:logoutRequest ID="123456789" Version="2.0" IssueInstant="200904051217"> <saml:NameID>@NOT_USED@</saml:NameID> <samlp:SessionIndex>abcdefg</samlp:SessionIndex> </samlp:logoutRequest>
我想从中获取SessionIndex(即’abcdefg’)的内容.我试过这个:
XPATH_QUERY = "logoutRequest[@ID][@Version='2.0'][IssueInstant]/SessionIndex" SAML_XMLNS = 'urn:oasis:names:tc:SAML:2.0:assertion' SAMLP_XMLNS = 'urn:oasis:names:tc:SAML:2.0:protocol' require 'nokogiri' doc = Nokogiri::XML(xml) doc.xpath(XPATH_QUERY,'saml' => SAML_XMLNS,'samlp' => SAMLP_XMLNS)
但是我收到以下错误:
Nokogiri::XML::SyntaxError: Namespace prefix samlp on logoutRequest is not defined Nokogiri::XML::SyntaxError: Namespace prefix saml on NameID is not defined Nokogiri::XML::SyntaxError: Namespace prefix samlp on SessionIndex is not defined
我已经尝试将命名空间添加到XPath查询中,但这并没有改变任何东西.
为什么我不能说服Nokogiri命名空间是有效的?