我正在尝试在c#中创建一个Web服务,以显示从在线源提取的xml信息。该网站是“http://www.omdbapi.com/?s=”movieititle“& r = XML”,我在其中插入了Underworld作为标题搜索。从网站上回来的是:
此XML文件似乎没有与之关联的任何样式信息。文档树如下所示。
<root response="True">
<Movie Title="Underworld" Year="2003" imdbID="tt0320691" Type="movie"/>
<Movie Title="Underworld: Evolution" Year="2006" imdbID="tt0401855" Type="movie"/>
<Movie Title="Underworld: Rise of the Lycans" Year="2009" imdbID="tt0834001" Type="movie"/>
<Movie Title="Underworld: Awakening" Year="2012" imdbID="tt1496025" Type="movie"/>
<Movie Title="Underworld U.S.A." Year="1961" imdbID="tt0055571" Type="movie"/>
<Movie Title="Underworld" Year="1927" imdbID="tt0018526" Type="movie"/>
<Movie Title="Tomb Raider: Underworld" Year="2008" imdbID="tt0972844" Type="game"/>
<Movie Title="Hercules in the Underworld" Year="1994" imdbID="tt0110019" Type="movie"/>
<Movie Title="Underworld" Year="1996" imdbID="tt0120414" Type="movie"/>
<Movie Title="King of the Underworld" Year="1939" imdbID="tt0031536" Type="movie"/>
</root>
我编写的用于提取信息的代码如下,但由于某种原因,它没有在文本框中显示任何内容,但我知道它正在通过迭代器,因为它显示“工作”10次,这是数字的条目。任何帮助将不胜感激。
private void button1_Click(object sender, EventArgs e)
{
txtResults.Clear();
HttpWebRequest myHttpWebRequest = null;
HttpWebResponse myHttpWebResponse = null;
XmlTextReader myXMLReader = null;
XPathNavigator nav;
XPathDocument docNav;
String title = txtMovieKeywords.Text;
String keyURL = "http://www.omdbapi.com/?s=" + title + "&r=XML";
myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(keyURL);
myHttpWebRequest.Method = "GET";
myHttpWebRequest.ContentType = "text/xml; encoding='utf-8'";
myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
myXMLReader = new XmlTextReader(myHttpWebResponse.GetResponseStream());
docNav = new XPathDocument(myXMLReader);
nav = docNav.CreateNavigator();
XPathNodeIterator NodeIter;
NodeIter = nav.Select("//root[@response='True']/Movie");
while (NodeIter.MoveNext())
{
txtResults2.Text += NodeIter.Current.Value.ToString();
//txtResults2.Text += NodeIter.Current.SelectSingleNode("Movie[@Title]").ToString();
txtResults2.Text += "work";
}
}
答案 0 :(得分:0)
你正在使用
txtResults2.Text += NodeIter.Current.Value.ToString();
但Movie
元素没有字符串值 - 您需要使用NodeIter.Current
读取每个GetAttribute
上的各个属性。
答案 1 :(得分:0)
NodeIter.Current.Value.ToString()
是空字符串,因为Movie元素没有任何值文本。
除非,Movie元素定义如下
<Movie Title="Underworld" Year="2003" imdbID="tt0320691" Type="movie">valueText</Movie>
然后您将通过此行NodeIter.Current.Value.ToString()
获得“valueText”
如果你想获得Movie元素的任何属性,你必须像这个样本一样编码
这将尝试从每个Movie元素中获取Title属性的值:
while (NodeIter.MoveNext())
{
txtResults2.Text += NodeIter.Current.GetAttribute("Title", "");
}