从具有混合XML和纯文本的流中读取

我有一个文本流,包含任意纯文本和格式良好的xml元素的段。 我怎样才能读取它并仅提取xml元素? 将ConformanceLevel设置为Fragment的XmlReader在遇到纯文本时仍会引发exception,因为它是格式错误的xml。

有任何想法吗? 谢谢

到目前为止,这是我的代码:

XmlReaderSettings settings = new XmlReaderSettings(); settings.ConformanceLevel = ConformanceLevel.Fragment; using (XmlReader reader = XmlReader.Create(stream, settings)) while (!reader.EOF) { reader.MoveToContent(); XmlDocument doc = new XmlDocument(); doc.Load(reader.ReadSubtree()); reader.ReadEndElement(); } 

这是一个示例流内容,我无法控制它:

 Found two objects: Object a  a   Object b  b   

如果这是一个hack,如果你用一个“假的”xml根节点包装你的混合文档,你应该能够做你需要的只获得类型元素的节点(即跳过文本节点)根元素:

 using System; using System.Linq; using System.Xml; static class Program { static void Main(string[] args) { string mixed = @" Found two objects: Object a  a   Object b  b   "; string xml = "" + mixed + ""; XmlDocument doc = new XmlDocument(); doc.LoadXml(xml); var xmlFragments = from XmlNode node in doc.FirstChild.ChildNodes where node.NodeType == XmlNodeType.Element select node; foreach (var fragment in xmlFragments) { Console.WriteLine(fragment.OuterXml); } } }