[one-users] ONE-2.0 CDATA in XML output

Shi Jin jinzishuai at gmail.com
Tue Nov 30 16:35:38 PST 2010


I got it. Somehow if the output is
<CPU>
   <![CDATA[2]]>
</CPU>
in multiple lines, it does not work.

If it is just one line:
<CPU><![CDATA[2]]></CPU>
It works.

But my opennebula-2.0.01 (git) outputs them in multiple lines.
I see an older version puts them in a single line. Maybe this is why hector
gets his to work.
So the questions are:
1. can we put them back to a single line?
2. Shall we still be able to parse XML CDATA on multiple lines?

Thanks.
Shi
On Tue, Nov 30, 2010 at 5:30 PM, Shi Jin <jinzishuai at gmail.com> wrote:

> Really? I am confused.
> Can you run the following code and see if your output is the same as mine?
> [cloudadmin at rhel6-one2 cgroups]$ cat test
> #!/usr/bin/ruby
> require 'rexml/document'
> vmcdata=<<XML
> <CPU>
>    <![CDATA[2]]>
> </CPU>
> XML
>
> doc=REXML::Document.new(vmcdata).root
> puts doc
> puts doc.text
>
> vmold=<<XML
> <CPU>
> 2
> </CPU>
> XML
>
> docold=REXML::Document.new(vmold).root
> puts docold
> puts docold.text
> [cloudadmin at rhel6-one2 cgroups]$ ./test
> <CPU>
>    <![CDATA[2]]>
> </CPU>
>
>
> <CPU>
> 2
> </CPU>
>
> 2
> [cloudadmin at rhel6-one2 cgroups]$ ruby --version
> ruby 1.8.7 (2010-06-23 patchlevel 299) [x86_64-linux]
>
>
> Thanks.
>
> Shi
>
> On Tue, Nov 30, 2010 at 5:18 PM, hector <hector at convivencial.org> wrote:
>
>> CDATA labels are ignored by REXML so you shouldn't worry about them.
>> It's like they're not there.
>>
>> Im testing your example and it simply works. Perhaps you can give some
>> more input on the problem? As I say, it shoudln't be CDATA related if
>> working with REXML.
>>
>> Héctor
>>
>>
>> El 01/12/10 01:07, Shi Jin escribió:
>> > Hi there,
>> >
>> > I used to have some ruby script to parse the output of "onevm show
>> <vmid> -x". After switching from 1.4 to 2.0, they no longer work. I think
>> the problem is that now the output of the XML has lots of CDATA in it. For
>> example
>> >     <CPU><![CDATA[2]]></CPU>
>> > which used to be just
>> >  <CPU><2></CPU>
>> >
>> > I am not a Ruby expert. Is there any easy way to parse the XML in Ruby
>> to get the CDATA data? My code looks like
>> > def getCPU
>> >                 vm=`onevm show  #{VMID} -x`
>> >                 doc=REXML::Document.new(vm).root
>> >                 $cpu=doc.elements['/VM/TEMPLATE/CPU'].text.strip
>> > end
>> >
>> > Thanks a lot.
>> >
>> > Shi
>> >
>> > --
>> > Shi Jin, PhD
>> >
>> >
>> >
>> > _______________________________________________
>> > Users mailing list
>> > Users at lists.opennebula.org
>> > http://lists.opennebula.org/listinfo.cgi/users-opennebula.org
>> >
>>
>>
>> --
>> Hector
>> _______________________________________________
>> Users mailing list
>> Users at lists.opennebula.org
>> http://lists.opennebula.org/listinfo.cgi/users-opennebula.org
>>
>
>
>
> --
> Shi Jin, Ph.D.
>
>


-- 
Shi Jin, Ph.D.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opennebula.org/pipermail/users-opennebula.org/attachments/20101130/1ace9238/attachment-0001.htm>


More information about the Users mailing list