c# - 如何通过 HTTP 将连续的 XML 流读入 XElement

标签 c# xml http streaming

我通过 http 响应流接收 xml 的“ block ”。每个 block 都是一个完整的迷你 xml 层次结构,例如:

<chunk1>
  <id>1</id>
  <data>blah blah-blah</data>
</chunk1>
...
(30 seconds later)
...
<chunk2>
  <id>2</id>
  <data>blah blah-blah</data>
</chunk2>
...
(30 seconds later)
...
<chunk1>
  <id>3</id>
  <data>blah blah-blah</data>
</chunk1>

在 C# 中将每个“ block ”读入 XElement 以进行进一步处理的最佳方法是什么?每个 block 可能有不同的根元素。

我看到了对 similar questions 的回复。然而,响应似乎并不是最佳的,因为它们涉及处理每个节点。我只想读取流,直到到达与打开 block 节点相对应的关闭节点,将整个 block 送入 XElement,调用方法来处理它,然后等待下一个 block 。

最佳答案

这就是我一直在寻找的:

XmlReader reader = XmlReader.Create(stream, new XmlReaderSettings() { ConformanceLevel = ConformanceLevel.Fragment });

while (reader.Read())
{
  using (XmlReader subTreeReader = reader.ReadSubtree())
  {
    XElement xmlData = XElement.Load(subTreeReader);
    Process(xmlData);
  }
}

关于c# - 如何通过 HTTP 将连续的 XML 流读入 XElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25631003/

相关文章:

xml - XML 文件处理要点的最佳方式 •

http - 如何将 CAFile 添加到我们的证书中

java - 为什么我的 cookie 值没有设置?

c# - 如何创建一个行为类似于 Session[] 集合的集合? C#

c# - 当 POST 回我的 Controller 时,我是否必须将部分 View 的数据重新分配回模型?

c# - 具有继承类型的列表的序列化

c# - C# 中静态事件的消极方面/不良做法

java - Commons XMLConfiguration 和模式验证?

java - FSET服务。无法实现web服务,soap客户端

php - Slim Framework : Method not allowed Method not allowed. 必须是以下之一:POST