나는 다음과 같은 XML 문서가 : 나는 SessionIndex
의 내용을 좀하고 싶습니다Nokogiri는 내 네임 스페이스를 어떻게 이해합니까?
<samlp:LogoutRequest ID="123456789" Version="2.0" IssueInstant="200904051217">
<saml:NameID>@[email protected]</saml:NameID>
<samlp:SessionIndex>abcdefg</samlp:SessionIndex>
</samlp:LogoutRequest>
을 그것에서 (즉, '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)
그러나 나는 다음과 같은 오류를 얻을 : 나는 XPath 쿼리에 네임 스페이스를 추가하려고했습니다
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
,하지만 아무것도 변경되지 않습니다.
Nokogiri에게 네임 스페이스가 유효하다는 것을 왜 확신시킬 수 없습니까?
에 두 번째 인수로 제공합니다. 말 그대로 irb에서 제대로 작동하지만 내 사양을 실행하면 여전히 불어납니다. Garr. –
알았습니다! Nokogiri는 발견 한 노드를 래핑하는 "오류"노드를 반환하지만 _really_did_find_the_node_! –