Как создать xmlElement из текущего node xmlReader?

Если у меня есть экземпляр xmlreader, как я могу его использовать для чтения текущего node и в итоге с экземпляром xmlElement?

Ответ 1

Не тестировалось, но как насчет с помощью XmlDocument:

    XmlDocument doc = new XmlDocument();
    doc.Load(reader);
    XmlElement el = doc.DocumentElement;

Альтернативно (из cmoment), что-то вроде:

    doc.LoadXml(reader.ReadOuterXml());

Но на самом деле я не поклонник этого... он заставляет лишний шаг xml-parse (один из более дорогостоящих операций с ЦП) без уважительной причины. Если оригинал глючит, то, возможно, подумайте о суб-читателе:

    using (XmlReader subReader = reader.ReadSubtree())
    {
        XmlDocument doc = new XmlDocument();
        doc.Load(subReader);
        XmlElement el = doc.DocumentElement;
    }

Ответ 2

Предполагая, что у вас есть XmlDocument, где вам нужно прикрепить вновь созданный XmlElement:

XmlElement myElement;
myXmlReader.Read();
if (myXmlReader.NodeType == XmlNodeType.Element)
{
   myElement = doc.CreateElement(myXmlReader.Name);
   myElement.InnerXml = myXmlReader.InnerXml;
}

Из docs: Не создавайте экземпляр XmlElement напрямую; вместо этого используйте такие методы, как CreateElement.