Как мне создать xmlElement из текущего узла xmlReader? - PullRequest
11 голосов
/ 12 ноября 2008

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

Ответы [ 2 ]

8 голосов
/ 12 ноября 2008

Не проверено, но как насчет через XmlDocument:

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

В качестве альтернативы (из комментария), что-то вроде:

    doc.LoadXml(reader.ReadOuterXml());

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

    using (XmlReader subReader = reader.ReadSubtree())
    {
        XmlDocument doc = new XmlDocument();
        doc.Load(subReader);
        XmlElement el = doc.DocumentElement;
    }
2 голосов
/ 12 ноября 2008

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...