From: Robert Klemme Date: 2007-08-31T06:20:04+09:00 Subject: Re: REXML Element exists question On 30.08.2007 11:35, John Butler wrote: > An xml file is generated and i am currently parsing through it in a > rails app. The problem with this XML file is sometimes the elelment > doesnt have a value it sometimes doesnt include the tags in the file. > So for example: > > If it has a value > Client Name > > An empty value > > > Sometimes i wont even have the above tags depending on how the file was > generated from a different application. > > I want to check if the Client element is present in the file so the > following code below works somehow: This should do what you need: doc = REXML::Document.new(File.read(f)) cl = REXML::XPath.first(doc, '//Client') project.client = cl.text if cl > if !element.elements["Client"].nil? > project.client = element.elements["Client"].text > end > > My question is there a more elegant way to this? I dont want to have to > write an if/case statment for every possible element. I did try the > below but that gave me an error on the nil? because it couldnt find the > element to test if it was nil, thats why im suprised the above code > works. > > !element.elements["Client"].nil ? project.client = > element.elements["Client"].text : project.client = nil > > > I have looked at the rexml docs for elements, attributes but nothing > works if the tags are not present. IMHO the REXML tutorial is great source: http://www.germane-software.com/software/rexml/docs/tutorial.html I also often look at http://www.w3schools.com/xpath/ http://www.zvon.org/xxl/XPathTutorial/General/examples.html Kind regards robert