加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 从XML网络流中读取整个元素

发布时间:2020-12-15 04:18:15 所属栏目:百科 来源:网络整理
导读:我在C#.NET 4.0中编写网络服务器.有一个网络TCP / IP连接,我可以通过它连接完整的 XML元素.他们定期到达,我需要立即处理它们.每个XML元素本身都是一个完整的XML文档,因此它有一个开放元素,几个子节点和一个结束元素.整个流没有单个根元素.所以当我打开连接时
我在C#.NET 4.0中编写网络服务器.有一个网络TCP / IP连接,我可以通过它连接完整的 XML元素.他们定期到达,我需要立即处理它们.每个XML元素本身都是一个完整的XML文档,因此它有一个开放元素,几个子节点和一个结束元素.整个流没有单个根元素.所以当我打开连接时,我得到的是这样的:
<status>
    <x>123</x>
    <y>456</y>
</status>

然后一段时间后它继续:

<status>
    <x>234</x>
    <y>567</y>
</status>

等等.我需要一种方法来读取完整的XML字符串,直到状态元素完成.我不想用纯文本阅读方法这样做,因为我不知道数据的格式是什么.我无法等到整个流完成,正如其他地方经常描述的那样.我已经尝试使用XmlReader类,但它的文档很奇怪,方法无法解决,第一个元素丢失,在发送第二个元素后,发生XmlException,因为有两个根元素.

解决方法

试试这个:
var settings = new XmlReaderSettings
{
    ConformanceLevel = ConformanceLevel.Fragment
};

using (var reader = XmlReader.Create(stream,settings))
{
    while (!reader.EOF)
    {
        reader.MoveToContent();

        var doc = XDocument.Load(reader.ReadSubtree());

        Console.WriteLine("X={0},Y={1}",(int)doc.Root.Element("x"),(int)doc.Root.Element("y"));

        reader.ReadEndElement();
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读