2008-11-12 72 views

回答

8

没有测试,但是通过XmlDocument怎么样:

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

或者(从cmoment),是这样的:

doc.LoadXml(reader.ReadOuterXml()); 

但其实我不是一个风扇..它会强制执行一个额外的xml解析步骤(更昂贵的操作之一),原因不明。如果原来是被出问题的话,或许考虑子阅读器:

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

将第2行更改为doc.LoadXml(reader.ReadOuterXml());所以我可以接受。谢谢。 – 2008-11-12 16:37:42

2

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

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

docs:不要不直接实例化XmlElement;相反,使用诸如CreateElement之类的方法。