On Tue, Nov 2, 2010 at 3:50 PM, David Kahn <[email protected]>wrote:

>
>
> On Tue, Nov 2, 2010 at 3:22 PM, Marnen Laibow-Koser 
> <[email protected]>wrote:
>
>> David Kahn wrote in post #958607:
>> > Cant seem to find an answer to this on google:
>> >
>> > If I have this value as the text within an attribute in my xml source:
>> > "a2/PP00nFwWa7I8Jog7bcw==\n"
>> >
>> > When I ask Nokogiri to return it, why does it return this:
>> > "a2/PP00nFwWa7I8Jog7bcw== " (the last character I confirmed in the
>> > debugger
>> > as a space character). So it seems Nokogiri is converting the "\n" to a
>> > space.
>> >
>> > Is there a way to tell Nokogiri to return verbatim? I am dealing with
>> > encrypted data and this modification which it is making to the xml
>> > source is
>> > significant?
>>
>> You probably need to use the xml:space attribute in your source
>> document, or at least that's the impression I get from
>> http://msdn.microsoft.com/en-us/library/ms256097.aspx .
>>
>
> Thanks Marnen - that was a really good idea, I just tried it in the console
> and it does not seem to help for the "\n" (results below) is it possible
> there is some other setting which would preserve the "\n"? This is really
> strange to me as these characters are within a string literal.. but it
> actually does also surprise me about the spaces.
>
> # without the xml:space="preserve"
> ruby > doc_enc = "<BORROWER
> _SSN=\"a2/PP00nFwWa7I8Jog7bcw==\n\"></BORROWER>"
>  => "<BORROWER _SSN=\"a2/PP00nFwWa7I8Jog7bcw==\n\"></BORROWER>"
> ruby > Nokogiri::XML(doc_enc)
>  => #<Nokogiri::XML::Document:0x12ff91c name="document"
> children=[#<Nokogiri::XML::Element:0x12ff71e name="BORROWER"
> attributes=[#<Nokogiri::XML::Attr:0x12ff6d8 name="_SSN"
> value="a2/PP00nFwWa7I8Jog7bcw== ">]>]>
> ruby > nd = Nokogiri::XML(doc_enc)
>  => #<Nokogiri::XML::Document:0x12fded2 name="document"
> children=[#<Nokogiri::XML::Element:0x12fdcac name="BORROWER"
> attributes=[#<Nokogiri::XML::Attr:0x12fdc3e name="_SSN"
> value="a2/PP00nFwWa7I8Jog7bcw== ">]>]>
> ruby > nd.xpath("BORROWER").attribute("_SSN").value
>  => "a2/PP00nFwWa7I8Jog7bcw== "
>
> # with xml:space=\"preserve\"
> ruby > doc_enc = "<BORROWER xml:space=\"preserve\"
> _SSN=\"a2/PP00nFwWa7I8Jog7bcw==\
>  => "<BORROWER xml:space=\"preserve\"
> _SSN=\"a2/PP00nFwWa7I8Jog7bcw==\n\"></BORROWER>"
> ruby > Nokogiri::XML(doc_enc) => #<Nokogiri::XML::Document:0x12f7244
> name="document" children=[#<Nokogiri::XML::Element:0x12f708c name="BORROWER"
> attributes=[#<Nokogiri::XML::Attr:0x12f705a name="space"
> namespace=#<Nokogiri::XML::Namespace:0x12f6f56 prefix="xml" href="
> http://www.w3.org/XML/1998/namespace";> value="preserve">,
> #<Nokogiri::XML::Attr:0x12f7050 name="_SSN" value="a2/PP00nFwWa7I8Jog7bcw==
> ">]>]>
> ruby >
> nd.xpath("BORROWER").attribute("_SSN").value                             =>
> "a2/PP00nFwWa7I8Jog7bcw== "
> ruby >
>

What seems even more insane is that if I wrap the encrypted string in
characters (pipe in this case), it still takes away my "\n":

 => "<BORROWER xml:space=\"preserve\"
_SSN=\"|a2/PP00nFwWa7I8Jog7bcw==\n|\"></BORROWER>"
ruby-1.9.2-p0 >
Nokogiri::XML(doc_enc)
=> #<Nokogiri::XML::Document:0x12eb1d8 name="document"
children=[#<Nokogiri::XML::Element:0x12eafd0 name="BORROWER"
attributes=[#<Nokogiri::XML::Attr:0x12eaf94 name="space"
namespace=#<Nokogiri::XML::Namespace:0x12eaea4 prefix="xml" href="
http://www.w3.org/XML/1998/namespace";> value="preserve">,
*#<Nokogiri::XML::Attr:0x12eaf8a
name="_SSN" value="|a2/PP00nFwWa7I8Jog7bcw== |">]>]>*



>
>
>
>> Best,
>> --
>> Marnen Laibow-Koser
>> http://www.marnen.org
>> [email protected]
>>
>> --
>> Posted via http://www.ruby-forum.com/.
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Ruby on Rails: Talk" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected]<rubyonrails-talk%[email protected]>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/rubyonrails-talk?hl=en.
>>
>>
>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to