I would like to pick your brains about Rexml and how to report from it.
For example, I am reading an XML file using references to each XML tag
like so:
The ‘report.puts’ writes this data out to a CSV file. At present I get a
list of all the titles in the XML file followed a list of the dates.
What I need it to get the side by side in a CSV file like so
Title Date
Item1 20th Jan 2009
Item2 12th Feb 2010
Does anyone have any suggestions on a suitable workflow for this?
report.puts “Date: #{e.text}”
Does anyone have any suggestions on a suitable workflow for this?
Just iterate over all “ItemInfo” elements and print values from sub
elements (which you can select via a relative XPath).
�report.puts “Date: #{e.text}”
Does anyone have any suggestions on a suitable workflow for this?
Just iterate over all “ItemInfo” elements and print values from sub
elements (which you can select via a relative XPath).
Kind regards
robert
Thanks for getting back to me. I will look into this and see how I get
on.
�report.puts “Date: #{e.text}”
Does anyone have any suggestions on a suitable workflow for this?
Just iterate over all “ItemInfo” elements and print values from sub
elements (which you can select via a relative XPath).
Kind regards
robert
To confirm I am following you correctly, I have now got the following:
info = doc.elements.to_a(“//UserData/List/ItemInfo/”)
Printing out info gives a line per line entry of all children under the
tag ItemInfo.
First of all, is this what you meant? Am I correct to assume that at
this point, you are suggesting I write this data to a CSV file stripping
off the tags with a regex or something? Is this correct?
Many thanks and apologies if I have misunderstood.
Could anybody help me with an issue you I am having with some XML I am
reading. I am using xpath to read 2 different parts of an XML file,
which looks a lot like this
84
0
BLAH LAH
12345
NEXT ITEM AS BOVE
Then I have further data, which is slightly different
84
0
BLAH LAH
12345
As you can see, the tags are the same but the first is DoneList and the
second NotDoneList. I need to process each set seperately and each set
can contain more than 1 entry. My code to give a CSV file is
doc = REXML::Document.new(d) #call REXML to open the XML file #To get NotDoneList data
doc.elements.each("//NotDoneList/Vector/Count/FullItemInfo") do |e|
detail =
(
e.elements[‘ItemInfo/Title’].text << “,” <<
e.elements[‘ItemInfo/Id’].text
)
puts detail
end
#To get DoneList data
doc.elements.each("//DoneList/Vector/Count/FullItemInfo") do |e|
detail =
(
e.elements[‘ItemInfo/Title’].text << “,” <<
e.elements[‘ItemInfo/Id’].text
)
puts detail
end
When I run this, no data in extracted and no errors are given. In
contrast if I do
doc.elements.each("//FullItemInfo") do |e|
I am able to extract all the information for both the NotDoneList and
DoneList, however this is not what I want. I want to address each data
set separately. The eventual idea will be to produce a report of all
items in the NotDoneList and another report for those in the DoneList.
I guess I am doing something wrong but I cannot see it.
Can anyone see what I am doing wrong with this? I would really
appreciate any help as I cannot figure it out.