我正在阅读一个教程而且效果很好。但我想知道如何用linq做到这一点
我正在尝试这样的事情
XDocument doc = XDocument.Load("http://clients1.google.com/complete/search?hl=" + lang+ "&output=toolbar&q=" + word+ "");
var suggestions = doc.Descandands("suggestions").Where( ....
但我有点困惑。这是我的xml代码
string lang = drpLang.SelectedValue;
//TextBoxa girilen değer alınır.
string word = txtSearch.Text;
//Google Suggest Değelerini içeren Labelı ilk başta temizliyoruz.
lblRetVal.Text = "";
/*Burada Google Suggest değerlerini içeren servisin kaynak kodunu alıyoruz.
* Xml olarak çekerken eşleşmeyen karakterler olduğu için böyle bir yol izliyoruz.
* */
WebRequest req = HttpWebRequest.Create("http://clients1.google.com/complete/search?hl=" + dil + "&output=toolbar&q=" + kelime + "");
WebResponse response = req.GetResponse();
StreamReader retValues = new StreamReader(response.GetResponseStream());
string html = retValues.ReadToEnd();
//XmlDocument xdoc = new XmlDocument();
////Tüm sayfayı çektiğimiz için sayfanın kaynak kodunu xml olarak yüklenmesi sağlıyoruz.
//xdoc.LoadXml(html);
//XmlNodeList nodeList = xdoc.SelectNodes("toplevel/CompleteSuggestion/suggestion");
////Burada alınan nodeları döngüye alıyoruz.
//foreach (XmlNode item in nodeList)
//{
// //Alınan nodeların data Attributes değerini tek tek labela yazdırıyoruz.
// lblRetVal.Text += item.Attributes["data"].InnerText + "<br>";
//}
答案 0 :(得分:0)
我不确定我是否理解正确,但如果您使用linq查询xml数据,我建议您创建一个包含所选后代中所有xml元素的类,并考虑下面的示例代码。
首先,我创建包含我想要查询的所有xml元素的类
public class CompleteSuggestion
{
public string suggestionData { get; set;}
}
这是我的linq to xml
public List<CompleteSuggestion> GetSuggestions(string lang, string word)
{
XDocument doc = XDocument.Load("http://clients1.google.com/complete/search?hl=" + lang+ "&output=toolbar&q=" + word+ "");
List<CompleteSuggestion> suggestions = (from s in doc.Descendants("suggestion")
select new CompleteSuggestion
{
suggestionData = s.Attribute("data").Value
}).ToList();
return suggestions;
}
最后,调用您想要的方法并使用它
List<CompleteSuggestion> suggestions = GetSuggestions("en", "angle");
foreach (CompleteSuggestion s in suggestions)
{
Response.Write(s.suggestionData);
}