LINQ to XML – 从文件加载XML片段

我有源XML文件,它带有多个根元素,我无能为力。 将这些片段加载到具有单个根节点的XDocument中的最佳方法是什么?我可以创建该根节点以获得有效的XML文档?

样品:

   

应该是这样的:

      

谢谢!

以下是使用XmlReader ,这可能是最灵活,性能最快的方法:

 XmlReaderSettings xrs = new XmlReaderSettings(); xrs.ConformanceLevel = ConformanceLevel.Fragment; XDocument doc = new XDocument(new XElement("root")); XElement root = doc.Descendants().First(); using (StreamReader fs = new StreamReader("XmlFile1.xml")) using (XmlReader xr = XmlReader.Create(fs, xrs)) { while(xr.Read()) { if (xr.NodeType == XmlNodeType.Element) { root.Add(XElement.Load(xr.ReadSubtree())); } } } 

我会让你把它放到字符串字段中,但你基本上可以这样做:

 myDoc=new XmlDocument(); myDoc.LoadXml(""+myData+""); 

大概是这样的。

 var newXML= new XElement("products", from x in Xdocuments.parse(originalFile).descendants("product") select new XElement("product",x.value) );