XmlDataReader would probably be faster than LINQ to XML, but LINQ to XML will probably be easier to write and maintain.
I was able to run the following code ten thousand (10,000) times in just over 0.1 seconds: do you need better performance than that?
var doc = XDocument.Parse(
@"<?xml version=""1.0""?>
<test>
<exam paper=""math"" section=""third"" value=""dull"">
<place>college</place>
</exam>
</test>");
var info =
(from test in doc.Elements("test")
from exam in test.Elements("exam")
select new{
section = exam.Attribute("section").Value,
place = exam.Element("place").Value
})
.ToList();