В корневом элементе отсутствует ошибка .net XmlDocument.load () - PullRequest
0 голосов
/ 29 апреля 2009

Привет всем.

Я получаю ошибку asp.net «Корневой элемент отсутствует», когда я загружаю результаты запроса REST в XmlDocument. Тот же самый запрос REST выглядит нормально и возвращает действительные результаты, когда я выполняю его с помощью аддона Firefox «RESTTEST». Но ошибка проявляется в коде C # .net. Кто-нибудь знает, что может быть причиной этого? Вот соответствующий код:

HttpWebResponse response = null;
response = (HttpWebResponse)request.GetResponse();
HttpStatusCode statusCode = response.StatusCode;
Stream responseData = response.GetResponseStream();
StreamReader sr = new StreamReader(responseData);
XmlTextReader reader = new XmlTextReader(sr);
XmlDocument doc = new XmlDocument();
doc.Load(sr); // here is where the error occurs.

Моя цель состоит в том, чтобы загрузить результаты запроса REST в модель данных XML с возможностью перемещения, которую я затем могу получить из элементов и их значений.

Когда я использую этот код, я получаю ожидаемые результаты. В чем разница?

while (reader.Read())
{
  switch (reader.NodeType)
  {
    case XmlNodeType.Element: // The node is an Element.
      Response.Write("Element Name: " + reader.Name);
      while (reader.MoveToNextAttribute()) // Read attributes.
      Response.Write(" " + reader.Name + "='" + reader.Value + "'");
      Response.Write("<br />");
      break;
    case XmlNodeType.Text: //Display the text in each element.
      Response.Write("Element value: " + reader.Value);
      Response.Write("Read key=" + reader.Name + ", value=" + reader.Value + "<br/>");
      break;
    case XmlNodeType.EndElement: //Display end of element.
      Response.Write("<br />");
      break;
    }
  }

Ответы [ 2 ]

1 голос
/ 06 мая 2009

Похоже, что XML является фрагментом, а не полностью сформированным XML-документом, поэтому у него нет корня. Чтобы заставить это работать, вы должны настроить объект XMLDocument для приема фрагментов ...

0 голосов
/ 29 апреля 2009

Попробуйте использовать sr.ReadToEnd(), чтобы увидеть, что вам возвращают. Вероятно, это пустая строка.

Кроме того, вы должны использовать XmlReader.Create, если вы используете .NET 2.0 или выше; XmlTextReader устарело.

См. Клиентская библиотека REST для .NET, часть 1 , где приведен пример использования XML-сериализации. (извините, нет части 2).

...