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

时间:2014-09-02 19:35:10

标签: c# xml http streaming

我正在接收'大块'在http响应流上的xml。每个块都是一个完整的迷你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#中阅读每个&#39;块的最佳方法是什么?进入XElement进行进一步处理?每个块可能有不同的根元素。

我见过对similar questions的回复。但是,响应似乎不是最佳的,因为它们涉及处理每个节点。我只想读取流,直到我到达与开放块节点对应的结束节点,将整个块提供给XElement,调用方法来处理它,然后等待下一个块。

1 个答案:

答案 0 :(得分:2)

这就是我想要的:

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);
  }
}