<p>If I have an xmlreader instance how can I use it to read its current node and end up with a xmlElement instance?</p>

Not tested, but how about via an
```
XmlDocument
```
:
```
```
XmlDocument doc = new XmlDocument();
    doc.Load(reader);
    XmlElement el = doc.DocumentElement;
```
```
Alternatively (from the cmoment), something like:
```
```
doc.LoadXml(reader.ReadOuterXml());
```
```
But actually I'm not a fan of that... it forces an additional xml-parse step (one of the more CPU-expensive operations) for no good reason. If the original is being glitchy, then perhaps consider a sub-reader:
```
```
using (XmlReader subReader = reader.ReadSubtree())
    {
        XmlDocument doc = new XmlDocument();
        doc.Load(subReader);
        XmlElement el = doc.DocumentElement;
    }
```
```