0

こんにちは。

REST 要求の結果を XmlDocument に読み込むと、asp.net エラー "ルート要素が見つかりません" が表示されます。Firefox アドオン「RESTTEST」を使用して実行すると、同じ REST リクエストが正常に表示され、有効な結果が返されます。しかし、エラーは 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;
    }
  }
4

2 に答える 2

1

XMLは完全に形成されたXMLドキュメントではなくフラグメントであるように見えます。そのため、ルートがありませんでした。これを機能させるには、フラグメントを受け入れるようにXMLDocumentオブジェクトを構成する必要があります...

于 2009-05-06T18:16:33.023 に答える
0

を使用sr.ReadToEnd()して、何が返されているかを確認してください。おそらく空の文字列です。

また、XmlReader.Create.NET 2.0 以降を使用している場合は、使用する必要があります。XmlTextReader廃止されました。

XML シリアル化を使用する例については、.NET 用 REST クライアント ライブラリ、パート 1を参照してください。(すみません、パート2はありません)。

于 2009-04-29T18:26:14.510 に答える