Tôi có tài liệu XML sau:Làm cách nào để Nokogiri hiểu được không gian tên của tôi?
<samlp:LogoutRequest ID="123456789" Version="2.0" IssueInstant="200904051217">
<saml:NameID>@[email protected]</saml:NameID>
<samlp:SessionIndex>abcdefg</samlp:SessionIndex>
</samlp:LogoutRequest>
Tôi muốn để có được nội dung của SessionIndex
(có nghĩa là, 'abcdefg') ra khỏi nó. Tôi đã thử điều này:
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)
nhưng tôi nhận được các lỗi sau đây:
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
Tôi đã thử thêm các không gian tên với truy vấn XPath, nhưng điều đó không thay đổi bất cứ điều gì.
Tại sao tôi không thể thuyết phục Nokogiri rằng các không gian tên hợp lệ?
Đó dường như để cho tôi những lỗi tương tự ... trong một số tình huống. Làm nó theo nghĩa đen trong irb hoạt động tốt, nhưng chạy thông số kỹ thuật của tôi vẫn thổi lên. Garr. –
OK! Nokogiri trả về một nút "lỗi" bao bọc nút mà nó tìm thấy, nhưng nó là _really_did_find_the_node_! –