如何从xmlReader的当前节点创建xmlElement?

时间:2008-11-12 15:20:02

标签: c# .net xml

如果我有一个xmlreader实例,我如何使用它来读取当前节点并以xmlElement实例结束?

2 个答案:

答案 0 :(得分:8)

未经过测试,但通过XmlDocument

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

或者(来自cmoment),例如:

    doc.LoadXml(reader.ReadOuterXml());

但实际上我并不喜欢它......它没有任何理由强制额外的xml-parse步骤(更昂贵的CPU操作之一)。如果原作是毛躁的,那么也许可以考虑一个子读者:

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

答案 1 :(得分:2)

假设你有XmlDocument,你需要附加新创建的XmlElement:

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

来自docs:不要直接实例化XmlElement;相反,使用CreateElement等方法。