Na primer :
WebClient client = new WebClient();
string address = @"http://gdata.youtube.com/feeds...art-index=1&max-results=10"
string fileName = Application.StartupPath + @"\" + "feeddata.xml";
try
{
client.DownloadFile(address, fileName);
}
catch (WebException exc)
{
MessageBox.Show("Cannot download file : " + exc.Message + " : " + address,
"Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
Probao sam ovakav XML da ucitam u DataSet pomocu :
DataSet ds = new DataSet () ;
ds.ReadXml (fileName) ;
Medjutim kada referenciram tabelu "title" .NET baca exception da u datasetu postoje 2 takve tabele
Probao sam i sa generisanjem *.xsd sheme da bih mogao da provalim kakva je struktura XML fajla tj. koji entiteti postoje ...
DataSet ds = new DataSet () ;
ds.ReadXml (fileName) ;
ds.WriteXmlSchema(fileXmlSchema) ;
Visual Studio je napravio xsd shemu al je takva relaciona struktura skroz necitljiva
i ne prepoznaje postojanje nekih polja u tabelama (mozda je problem sto je xml skroz "isharan" XSLT tagovima )
Sledeci pokusaj je bio sa XPath Query-ijem:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.SelectNodes (@"*/entry/media:group") ;
medjutim i tu XmlDocument baca exception i ako je upit ispravan ( probao sam ovaj upit sa MSXML parserom u C++ -u i radi bez problema)
Namespace Manager or XsltContext needed. This query has a prefix, variable, or user-defined function.
Da bi na kraju ucitao sve u XmlDocument pa isao redom :
xmlDoc.LoadXml(fileName) ;
XmlElement xmlElem = xmlDoc.DocumentElement;
xmlNodeList = xmlElem.GetElementsByTagName("entry");
if (xmlNodeList.Count > 0)
{
foreach(XmlNode xmlNode in xmlNodeList)
{
for (int i = 0; i < xmlNode.ChildNodes.Count; i++)
{
XmlNode node = xmlNode.ChildNodes[i];
string strTitle = "";
string strURL = "";
string strImgPath = "";
if (node.Name == "media:group")
{
XmlNodeList xmlMediaNodes = node.ChildNodes;
foreach (XmlNode nodeInMedia in xmlMediaNodes)
{
if (nodeInMedia.Name == "media:title")
strTitle = nodeInMedia.InnerText;
if (nodeInMedia.Name == "media:player")
strURL = nodeInMedia.Attributes["url"].InnerText;
if (nodeInMedia.Name == "media:thumbnail")
strImgPath = nodeInMedia.Attributes["url"].InnerText;
if (strTitle != String.Empty && strURL != String.Empty && strImgPath != String.Empty)
{
EntryFeed feed = new EntryFeed(strURL, strTitle, strImgPath);
m_aoFeeds.Add(feed);
lstVideoFiles.Items.Add(feed.Title);
break;
}
}
}
}
}
}
E ovde bih voleo da vidim LINQ na delu a da ne moram da "burgijam" po XML dokumentu .
Da li postoji mogucnost da LINQ ili VS2008 "provali" o kakvoj je strukturi XML fajla je rec
tj. da bih mogao na najbrzi moguci nacin da napravim linq-upit koji ce mi vratiti listu video klipova sa youtube feed-a?
BTW : Koristim VS2005, imam VS2008 al' cekam testnu masinu u firmi jer mi se ne drzi 2 VS na jednoj masini










LINQ-to-XML i YouTube API feed - pitanje