whileループが何も返さないのはなぜですか?これは.NETと関係があると思います。私は.NET2.0を持っています。問題は、whileステートメントが1回実行されてから終了することです。これは、その名前のノードが存在しない場合と同様に、存在する場合と同じです。
XMLの例を次に示します。
<rss version="2.0">
<channel>
<title>...</title>
<link>...</link>
<description>...</description>
<lastBuildDate>...</lastBuildDate>
<item>
<title>User greeting</title>
<guid>...</guid>
<link>http://...</link>
<description>Voicebox number: 1</description>
<author>Free Conference Call</author>
</item>
<item>
<title>User greeting</title>
<guid>...</guid>
<link>http://...</link>
<description>Voicebox number: 1</description>
<author>Free Conference Call</author>
</item>
</channel>
</rss>
コードは次のとおりです。
HttpWebRequest webreq = (HttpWebRequest)WebRequest.Create (reqURL);
// Set some reasonable limits on resources used by this request
webreq.MaximumAutomaticRedirections = 4;
webreq.MaximumResponseHeadersLength = 4;
//====================
// Set credentials to use for this request.
webreq.Credentials = CredentialCache.DefaultCredentials;
HttpWebResponse response = (HttpWebResponse)webreq.GetResponse ();
//====================
// Get the stream associated with the response.
receiveStream = response.GetResponseStream ();
//====================
// Pipes the stream to a higher level stream reader with the required encoding format.
readStream = new StreamReader(receiveStream, Encoding.UTF8);
resXML = readStream.ReadToEnd();
readStream = new StreamReader(receiveStream, Encoding.UTF8);
//====================
Console.WriteLine(resXML);
Stream XMLStream = receiveStream;
readStream = new StreamReader(XMLStream, Encoding.UTF8);
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
settings.IgnoreWhitespace = true;
settings.IgnoreComments = true;
XmlReader reader = System.Xml.XmlReader.Create(readStream, settings);
while(reader.EOF == false)
{
reader.ReadToFollowing("link");
Console.WriteLine("link: " + reader.Value);
//=======================================
reader.ReadToFollowing("description");
Console.WriteLine("descrip: " + reader.Value);
}