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 <jinzish...@gmail.com> wrote: > Really? I am confused. > Can you run the following code and see if your output is the same as mine? > [cloudad...@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 > [cloudad...@rhel6-one2 cgroups]$ ./test > <CPU> > <![CDATA[2]]> > </CPU> > > > <CPU> > 2 > </CPU> > > 2 > [cloudad...@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 <hec...@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@lists.opennebula.org >> > http://lists.opennebula.org/listinfo.cgi/users-opennebula.org >> > >> >> >> -- >> Hector >> _______________________________________________ >> Users mailing list >> Users@lists.opennebula.org >> http://lists.opennebula.org/listinfo.cgi/users-opennebula.org >> > > > > -- > Shi Jin, Ph.D. > > -- Shi Jin, Ph.D.
_______________________________________________ Users mailing list Users@lists.opennebula.org http://lists.opennebula.org/listinfo.cgi/users-opennebula.org