我正在尝试从看起来像这样的 tcp 流中使用内容:
1
2
<Xml att='value'>
<Child> ... </Child>
</Xml>
3
4
使用如下代码:
var one = Convert.ToInt32(_tcpReader.ReadLine()); // ok
var two = Convert.ToInt32(_tcpReader.ReadLine()); // ok
using (var xmlReader = XmlReader.Create(_tcpReader))
{
xmlReader.MoveToContent();
var xmlElement = XElement.Load(xmlReader); // dies
//(XElement) XNode.ReadFrom(xmlReader); // also dies
}
var three = Convert.ToInt32(_tcpReader.ReadLine());
var four = Convert.ToInt32(_tcpReader.ReadLine());
问题是两者都XElement.Load
抱怨XNode.ReadFrom
根级别的无效内容;大概是 3。在这两种情况下,都观察到 XmlReader 当前位于“Xml”EndElement 上。我希望 XmlReader 在找到结束元素后停止尝试使用底层流中的内容,以便后续从流中读取(即三、四)将成功。
另外,当然,我不希望 XmlReader 在完成读取后关闭底层流。