Bonjour à tous,
Je permet sur mon site à tous les utilisateurs
d'ajouter un lien "RSS" pour lire les nouvelles de leurs choix. Pour le
moment avec les fichiers rss standart la validation semble bien
fonctionner. Sauf pour un exemple particulier. Celui de Slashdot qui
pourtant est dans les norme du RSS. Voici le lien de leur fichier rss:
http://slashdot.org/index.rss
Et voila comment je validais les autres fichiers:
'###############
Private Function ValiderRss() as Boolean
Dim Out As String
Dim XmlDoc As New System.Xml.XmlDocument
XmlDoc.Load(Me.TxtUrl.Text)
Dim XPath As String
XPath = "//channel/title" 'Récupérer le titre
Dim NodeTitle As System.Xml.XmlNode = XmlDoc.SelectSingleNode(XPath)
XPath = "//channel/link" 'Récupérer le lien
Dim NodeUrl As System.Xml.XmlNode = XmlDoc.SelectSingleNode(XPath)
'Et on commence à afficher
Out = "<a href=" & NodeUrl.InnerText & ">" & NodeTitle.InnerText &
"</a><BR><BR>"
............. etc
'######################
Avec le fichier de Slashdot les nodes NodeTitle et NodeUrl sont toujours à
Nothing et je ne vois vraiment pas pourquoi puisque cela fonctionne
parfaitement avec les autres site. Est-ce que c'est parce qu'ils ont des
genres de syntaxes du genre : <channel rdf:about="http://slashdot.org/"> ?
Est-ce le rdf:about qui change les choses? Je vous avous que c'est un peu
dure de faire le déboguage de cela et je ne sais plus où je dois commencer
pour tout vérifier la machine. Avez-vous une idée?
Merci,
Francois
Bonjour à tous,
Je permet sur mon site à tous les utilisateurs
d'ajouter un lien "RSS" pour lire les nouvelles de leurs choix. Pour le
moment avec les fichiers rss standart la validation semble bien
fonctionner. Sauf pour un exemple particulier. Celui de Slashdot qui
pourtant est dans les norme du RSS. Voici le lien de leur fichier rss:
http://slashdot.org/index.rss
Et voila comment je validais les autres fichiers:
'###############
Private Function ValiderRss() as Boolean
Dim Out As String
Dim XmlDoc As New System.Xml.XmlDocument
XmlDoc.Load(Me.TxtUrl.Text)
Dim XPath As String
XPath = "//channel/title" 'Récupérer le titre
Dim NodeTitle As System.Xml.XmlNode = XmlDoc.SelectSingleNode(XPath)
XPath = "//channel/link" 'Récupérer le lien
Dim NodeUrl As System.Xml.XmlNode = XmlDoc.SelectSingleNode(XPath)
'Et on commence à afficher
Out = "<a href=" & NodeUrl.InnerText & ">" & NodeTitle.InnerText &
"</a><BR><BR>"
............. etc
'######################
Avec le fichier de Slashdot les nodes NodeTitle et NodeUrl sont toujours à
Nothing et je ne vois vraiment pas pourquoi puisque cela fonctionne
parfaitement avec les autres site. Est-ce que c'est parce qu'ils ont des
genres de syntaxes du genre : <channel rdf:about="http://slashdot.org/"> ?
Est-ce le rdf:about qui change les choses? Je vous avous que c'est un peu
dure de faire le déboguage de cela et je ne sais plus où je dois commencer
pour tout vérifier la machine. Avez-vous une idée?
Merci,
Francois
Bonjour à tous,
Je permet sur mon site à tous les utilisateurs
d'ajouter un lien "RSS" pour lire les nouvelles de leurs choix. Pour le
moment avec les fichiers rss standart la validation semble bien
fonctionner. Sauf pour un exemple particulier. Celui de Slashdot qui
pourtant est dans les norme du RSS. Voici le lien de leur fichier rss:
http://slashdot.org/index.rss
Et voila comment je validais les autres fichiers:
'###############
Private Function ValiderRss() as Boolean
Dim Out As String
Dim XmlDoc As New System.Xml.XmlDocument
XmlDoc.Load(Me.TxtUrl.Text)
Dim XPath As String
XPath = "//channel/title" 'Récupérer le titre
Dim NodeTitle As System.Xml.XmlNode = XmlDoc.SelectSingleNode(XPath)
XPath = "//channel/link" 'Récupérer le lien
Dim NodeUrl As System.Xml.XmlNode = XmlDoc.SelectSingleNode(XPath)
'Et on commence à afficher
Out = "<a href=" & NodeUrl.InnerText & ">" & NodeTitle.InnerText &
"</a><BR><BR>"
............. etc
'######################
Avec le fichier de Slashdot les nodes NodeTitle et NodeUrl sont toujours à
Nothing et je ne vois vraiment pas pourquoi puisque cela fonctionne
parfaitement avec les autres site. Est-ce que c'est parce qu'ils ont des
genres de syntaxes du genre : <channel rdf:about="http://slashdot.org/"> ?
Est-ce le rdf:about qui change les choses? Je vous avous que c'est un peu
dure de faire le déboguage de cela et je ne sais plus où je dois commencer
pour tout vérifier la machine. Avez-vous une idée?
Merci,
Francois
Je pense qu'il manque le niveau "item". Tes requêtes XPath devraient
plutôt référencer "//channel/item/title" et "//channel/item/link". Voici
un exemple de parcours d'un flux RSS:
XPathDocument xpDoc = new XPathDocument(txtRSSURL.Text);
XPathNavigator xpNav = xpDoc.CreateNavigator();
XPathExpression expr > xpNav.Compile("/rss/channel/item");
XPathExpression titleExpr = xpNav.Compile("string(title/text())");
XPathExpression linkExpr = xpNav.Compile("string(link/text())");
XPathExpression descExpr =
xpNav.Compile("string(description/text())");
XPathNodeIterator iter = xpNav.Select(expr);
while (iter.MoveNext())
{
string title = (string)iter.Current.Evaluate(titleExpr);
string link = (string)iter.Current.Evaluate(linkExpr);
string desc = (string)iter.Current.Evaluate(descExpr);
...
}
L'exemple utilise un XPathNavigator plutôt qu'un Select sur un
XmlDocument, c'est généralement plus performant.
Lionel.
"Francois Soucy" a écrit dans le message de news:Bonjour à tous,
Je permet sur mon site à tous les utilisateurs
d'ajouter un lien "RSS" pour lire les nouvelles de leurs choix. Pour le
moment avec les fichiers rss standart la validation semble bien
fonctionner. Sauf pour un exemple particulier. Celui de Slashdot qui
pourtant est dans les norme du RSS. Voici le lien de leur fichier rss:
http://slashdot.org/index.rss
Et voila comment je validais les autres fichiers:
'###############
Private Function ValiderRss() as Boolean
Dim Out As String
Dim XmlDoc As New System.Xml.XmlDocument
XmlDoc.Load(Me.TxtUrl.Text)
Dim XPath As String
XPath = "//channel/title" 'Récupérer le titre
Dim NodeTitle As System.Xml.XmlNode = XmlDoc.SelectSingleNode(XPath)
XPath = "//channel/link" 'Récupérer le lien
Dim NodeUrl As System.Xml.XmlNode = XmlDoc.SelectSingleNode(XPath)
'Et on commence à afficher
Out = "<a href=" & NodeUrl.InnerText & ">" & NodeTitle.InnerText &
"</a><BR><BR>"
............. etc
'######################
Avec le fichier de Slashdot les nodes NodeTitle et NodeUrl sont toujours
à Nothing et je ne vois vraiment pas pourquoi puisque cela fonctionne
parfaitement avec les autres site. Est-ce que c'est parce qu'ils ont des
genres de syntaxes du genre : <channel rdf:about="http://slashdot.org/">
? Est-ce le rdf:about qui change les choses? Je vous avous que c'est un
peu dure de faire le déboguage de cela et je ne sais plus où je dois
commencer pour tout vérifier la machine. Avez-vous une idée?
Merci,
Francois
Je pense qu'il manque le niveau "item". Tes requêtes XPath devraient
plutôt référencer "//channel/item/title" et "//channel/item/link". Voici
un exemple de parcours d'un flux RSS:
XPathDocument xpDoc = new XPathDocument(txtRSSURL.Text);
XPathNavigator xpNav = xpDoc.CreateNavigator();
XPathExpression expr > xpNav.Compile("/rss/channel/item");
XPathExpression titleExpr = xpNav.Compile("string(title/text())");
XPathExpression linkExpr = xpNav.Compile("string(link/text())");
XPathExpression descExpr =
xpNav.Compile("string(description/text())");
XPathNodeIterator iter = xpNav.Select(expr);
while (iter.MoveNext())
{
string title = (string)iter.Current.Evaluate(titleExpr);
string link = (string)iter.Current.Evaluate(linkExpr);
string desc = (string)iter.Current.Evaluate(descExpr);
...
}
L'exemple utilise un XPathNavigator plutôt qu'un Select sur un
XmlDocument, c'est généralement plus performant.
Lionel.
"Francois Soucy" <Root@127.0.0.1> a écrit dans le message de news:
utsoBGbBFHA.824@TK2MSFTNGP11.phx.gbl...
Bonjour à tous,
Je permet sur mon site à tous les utilisateurs
d'ajouter un lien "RSS" pour lire les nouvelles de leurs choix. Pour le
moment avec les fichiers rss standart la validation semble bien
fonctionner. Sauf pour un exemple particulier. Celui de Slashdot qui
pourtant est dans les norme du RSS. Voici le lien de leur fichier rss:
http://slashdot.org/index.rss
Et voila comment je validais les autres fichiers:
'###############
Private Function ValiderRss() as Boolean
Dim Out As String
Dim XmlDoc As New System.Xml.XmlDocument
XmlDoc.Load(Me.TxtUrl.Text)
Dim XPath As String
XPath = "//channel/title" 'Récupérer le titre
Dim NodeTitle As System.Xml.XmlNode = XmlDoc.SelectSingleNode(XPath)
XPath = "//channel/link" 'Récupérer le lien
Dim NodeUrl As System.Xml.XmlNode = XmlDoc.SelectSingleNode(XPath)
'Et on commence à afficher
Out = "<a href=" & NodeUrl.InnerText & ">" & NodeTitle.InnerText &
"</a><BR><BR>"
............. etc
'######################
Avec le fichier de Slashdot les nodes NodeTitle et NodeUrl sont toujours
à Nothing et je ne vois vraiment pas pourquoi puisque cela fonctionne
parfaitement avec les autres site. Est-ce que c'est parce qu'ils ont des
genres de syntaxes du genre : <channel rdf:about="http://slashdot.org/">
? Est-ce le rdf:about qui change les choses? Je vous avous que c'est un
peu dure de faire le déboguage de cela et je ne sais plus où je dois
commencer pour tout vérifier la machine. Avez-vous une idée?
Merci,
Francois
Je pense qu'il manque le niveau "item". Tes requêtes XPath devraient
plutôt référencer "//channel/item/title" et "//channel/item/link". Voici
un exemple de parcours d'un flux RSS:
XPathDocument xpDoc = new XPathDocument(txtRSSURL.Text);
XPathNavigator xpNav = xpDoc.CreateNavigator();
XPathExpression expr > xpNav.Compile("/rss/channel/item");
XPathExpression titleExpr = xpNav.Compile("string(title/text())");
XPathExpression linkExpr = xpNav.Compile("string(link/text())");
XPathExpression descExpr =
xpNav.Compile("string(description/text())");
XPathNodeIterator iter = xpNav.Select(expr);
while (iter.MoveNext())
{
string title = (string)iter.Current.Evaluate(titleExpr);
string link = (string)iter.Current.Evaluate(linkExpr);
string desc = (string)iter.Current.Evaluate(descExpr);
...
}
L'exemple utilise un XPathNavigator plutôt qu'un Select sur un
XmlDocument, c'est généralement plus performant.
Lionel.
"Francois Soucy" a écrit dans le message de news:Bonjour à tous,
Je permet sur mon site à tous les utilisateurs
d'ajouter un lien "RSS" pour lire les nouvelles de leurs choix. Pour le
moment avec les fichiers rss standart la validation semble bien
fonctionner. Sauf pour un exemple particulier. Celui de Slashdot qui
pourtant est dans les norme du RSS. Voici le lien de leur fichier rss:
http://slashdot.org/index.rss
Et voila comment je validais les autres fichiers:
'###############
Private Function ValiderRss() as Boolean
Dim Out As String
Dim XmlDoc As New System.Xml.XmlDocument
XmlDoc.Load(Me.TxtUrl.Text)
Dim XPath As String
XPath = "//channel/title" 'Récupérer le titre
Dim NodeTitle As System.Xml.XmlNode = XmlDoc.SelectSingleNode(XPath)
XPath = "//channel/link" 'Récupérer le lien
Dim NodeUrl As System.Xml.XmlNode = XmlDoc.SelectSingleNode(XPath)
'Et on commence à afficher
Out = "<a href=" & NodeUrl.InnerText & ">" & NodeTitle.InnerText &
"</a><BR><BR>"
............. etc
'######################
Avec le fichier de Slashdot les nodes NodeTitle et NodeUrl sont toujours
à Nothing et je ne vois vraiment pas pourquoi puisque cela fonctionne
parfaitement avec les autres site. Est-ce que c'est parce qu'ils ont des
genres de syntaxes du genre : <channel rdf:about="http://slashdot.org/">
? Est-ce le rdf:about qui change les choses? Je vous avous que c'est un
peu dure de faire le déboguage de cela et je ne sais plus où je dois
commencer pour tout vérifier la machine. Avez-vous une idée?
Merci,
Francois
Non il ne me manque pas le niveau "item" puisque les éléments "title" et
"link se retrouve aussi à la base du document. Regard le lien que j'ai
envoyé avec le post original. C'est juste a ce niveau que je cherche a
comprendre pourquoi il ne veut pas le prendre. Les 2 éléments sont bien là
mais ne semble pas être vu par le selecteur de node.
Francois
"Lionel LASKE" a écri
Je pense qu'il manque le niveau "item". Tes requêtes XPath devraient
plutôt référencer "//channel/item/title" et "//channel/item/link". Voici
un exemple de parcours d'un flux RSS:
XPathDocument xpDoc = new XPathDocument(txtRSSURL.Text);
XPathNavigator xpNav = xpDoc.CreateNavigator();
XPathExpression expr >> xpNav.Compile("/rss/channel/item");
XPathExpression titleExpr =
xpNav.Compile("string(title/text())");
XPathExpression linkExpr = xpNav.Compile("string(link/text())");
XPathExpression descExpr =
xpNav.Compile("string(description/text())");
XPathNodeIterator iter = xpNav.Select(expr);
while (iter.MoveNext())
{
string title = (string)iter.Current.Evaluate(titleExpr);
string link = (string)iter.Current.Evaluate(linkExpr);
string desc = (string)iter.Current.Evaluate(descExpr);
...
}
L'exemple utilise un XPathNavigator plutôt qu'un Select sur un
XmlDocument, c'est généralement plus performant.
Lionel.
"Francois Soucy" a écrit dans le message de news:Bonjour à tous,
Je permet sur mon site à tous les utilisateurs
d'ajouter un lien "RSS" pour lire les nouvelles de leurs choix. Pour le
moment avec les fichiers rss standart la validation semble bien
fonctionner. Sauf pour un exemple particulier. Celui de Slashdot qui
pourtant est dans les norme du RSS. Voici le lien de leur fichier rss:
http://slashdot.org/index.rss
Et voila comment je validais les autres fichiers:
'###############
Private Function ValiderRss() as Boolean
Dim Out As String
Dim XmlDoc As New System.Xml.XmlDocument
XmlDoc.Load(Me.TxtUrl.Text)
Dim XPath As String
XPath = "//channel/title" 'Récupérer le titre
Dim NodeTitle As System.Xml.XmlNode = XmlDoc.SelectSingleNode(XPath)
XPath = "//channel/link" 'Récupérer le lien
Dim NodeUrl As System.Xml.XmlNode = XmlDoc.SelectSingleNode(XPath)
'Et on commence à afficher
Out = "<a href=" & NodeUrl.InnerText & ">" & NodeTitle.InnerText &
"</a><BR><BR>"
............. etc
'######################
Avec le fichier de Slashdot les nodes NodeTitle et NodeUrl sont toujours
à Nothing et je ne vois vraiment pas pourquoi puisque cela fonctionne
parfaitement avec les autres site. Est-ce que c'est parce qu'ils ont des
genres de syntaxes du genre : <channel rdf:about="http://slashdot.org/">
? Est-ce le rdf:about qui change les choses? Je vous avous que c'est un
peu dure de faire le déboguage de cela et je ne sais plus où je dois
commencer pour tout vérifier la machine. Avez-vous une idée?
Merci,
Francois
Non il ne me manque pas le niveau "item" puisque les éléments "title" et
"link se retrouve aussi à la base du document. Regard le lien que j'ai
envoyé avec le post original. C'est juste a ce niveau que je cherche a
comprendre pourquoi il ne veut pas le prendre. Les 2 éléments sont bien là
mais ne semble pas être vu par le selecteur de node.
Francois
"Lionel LASKE" <llaske@c2s.fr> a écri
eN4eFodBFHA.3592@TK2MSFTNGP11.phx.gbl...
Je pense qu'il manque le niveau "item". Tes requêtes XPath devraient
plutôt référencer "//channel/item/title" et "//channel/item/link". Voici
un exemple de parcours d'un flux RSS:
XPathDocument xpDoc = new XPathDocument(txtRSSURL.Text);
XPathNavigator xpNav = xpDoc.CreateNavigator();
XPathExpression expr >> xpNav.Compile("/rss/channel/item");
XPathExpression titleExpr =
xpNav.Compile("string(title/text())");
XPathExpression linkExpr = xpNav.Compile("string(link/text())");
XPathExpression descExpr =
xpNav.Compile("string(description/text())");
XPathNodeIterator iter = xpNav.Select(expr);
while (iter.MoveNext())
{
string title = (string)iter.Current.Evaluate(titleExpr);
string link = (string)iter.Current.Evaluate(linkExpr);
string desc = (string)iter.Current.Evaluate(descExpr);
...
}
L'exemple utilise un XPathNavigator plutôt qu'un Select sur un
XmlDocument, c'est généralement plus performant.
Lionel.
"Francois Soucy" <Root@127.0.0.1> a écrit dans le message de news:
utsoBGbBFHA.824@TK2MSFTNGP11.phx.gbl...
Bonjour à tous,
Je permet sur mon site à tous les utilisateurs
d'ajouter un lien "RSS" pour lire les nouvelles de leurs choix. Pour le
moment avec les fichiers rss standart la validation semble bien
fonctionner. Sauf pour un exemple particulier. Celui de Slashdot qui
pourtant est dans les norme du RSS. Voici le lien de leur fichier rss:
http://slashdot.org/index.rss
Et voila comment je validais les autres fichiers:
'###############
Private Function ValiderRss() as Boolean
Dim Out As String
Dim XmlDoc As New System.Xml.XmlDocument
XmlDoc.Load(Me.TxtUrl.Text)
Dim XPath As String
XPath = "//channel/title" 'Récupérer le titre
Dim NodeTitle As System.Xml.XmlNode = XmlDoc.SelectSingleNode(XPath)
XPath = "//channel/link" 'Récupérer le lien
Dim NodeUrl As System.Xml.XmlNode = XmlDoc.SelectSingleNode(XPath)
'Et on commence à afficher
Out = "<a href=" & NodeUrl.InnerText & ">" & NodeTitle.InnerText &
"</a><BR><BR>"
............. etc
'######################
Avec le fichier de Slashdot les nodes NodeTitle et NodeUrl sont toujours
à Nothing et je ne vois vraiment pas pourquoi puisque cela fonctionne
parfaitement avec les autres site. Est-ce que c'est parce qu'ils ont des
genres de syntaxes du genre : <channel rdf:about="http://slashdot.org/">
? Est-ce le rdf:about qui change les choses? Je vous avous que c'est un
peu dure de faire le déboguage de cela et je ne sais plus où je dois
commencer pour tout vérifier la machine. Avez-vous une idée?
Merci,
Francois
Non il ne me manque pas le niveau "item" puisque les éléments "title" et
"link se retrouve aussi à la base du document. Regard le lien que j'ai
envoyé avec le post original. C'est juste a ce niveau que je cherche a
comprendre pourquoi il ne veut pas le prendre. Les 2 éléments sont bien là
mais ne semble pas être vu par le selecteur de node.
Francois
"Lionel LASKE" a écri
Je pense qu'il manque le niveau "item". Tes requêtes XPath devraient
plutôt référencer "//channel/item/title" et "//channel/item/link". Voici
un exemple de parcours d'un flux RSS:
XPathDocument xpDoc = new XPathDocument(txtRSSURL.Text);
XPathNavigator xpNav = xpDoc.CreateNavigator();
XPathExpression expr >> xpNav.Compile("/rss/channel/item");
XPathExpression titleExpr =
xpNav.Compile("string(title/text())");
XPathExpression linkExpr = xpNav.Compile("string(link/text())");
XPathExpression descExpr =
xpNav.Compile("string(description/text())");
XPathNodeIterator iter = xpNav.Select(expr);
while (iter.MoveNext())
{
string title = (string)iter.Current.Evaluate(titleExpr);
string link = (string)iter.Current.Evaluate(linkExpr);
string desc = (string)iter.Current.Evaluate(descExpr);
...
}
L'exemple utilise un XPathNavigator plutôt qu'un Select sur un
XmlDocument, c'est généralement plus performant.
Lionel.
"Francois Soucy" a écrit dans le message de news:Bonjour à tous,
Je permet sur mon site à tous les utilisateurs
d'ajouter un lien "RSS" pour lire les nouvelles de leurs choix. Pour le
moment avec les fichiers rss standart la validation semble bien
fonctionner. Sauf pour un exemple particulier. Celui de Slashdot qui
pourtant est dans les norme du RSS. Voici le lien de leur fichier rss:
http://slashdot.org/index.rss
Et voila comment je validais les autres fichiers:
'###############
Private Function ValiderRss() as Boolean
Dim Out As String
Dim XmlDoc As New System.Xml.XmlDocument
XmlDoc.Load(Me.TxtUrl.Text)
Dim XPath As String
XPath = "//channel/title" 'Récupérer le titre
Dim NodeTitle As System.Xml.XmlNode = XmlDoc.SelectSingleNode(XPath)
XPath = "//channel/link" 'Récupérer le lien
Dim NodeUrl As System.Xml.XmlNode = XmlDoc.SelectSingleNode(XPath)
'Et on commence à afficher
Out = "<a href=" & NodeUrl.InnerText & ">" & NodeTitle.InnerText &
"</a><BR><BR>"
............. etc
'######################
Avec le fichier de Slashdot les nodes NodeTitle et NodeUrl sont toujours
à Nothing et je ne vois vraiment pas pourquoi puisque cela fonctionne
parfaitement avec les autres site. Est-ce que c'est parce qu'ils ont des
genres de syntaxes du genre : <channel rdf:about="http://slashdot.org/">
? Est-ce le rdf:about qui change les choses? Je vous avous que c'est un
peu dure de faire le déboguage de cela et je ne sais plus où je dois
commencer pour tout vérifier la machine. Avez-vous une idée?
Merci,
Francois
Essaye avec RssFeed:
http://www.gotdotnet.com/workspaces/workspace.aspx?idj116a0f-66c4-4f91-9e13-a0d00960b9ad
Il propose cette fonctionnalité sous forme d'un user control ASP.NET.
Lionel.
"Francois Soucy" a écrit dans le message de news:Non il ne me manque pas le niveau "item" puisque les éléments "title" et
"link se retrouve aussi à la base du document. Regard le lien que j'ai
envoyé avec le post original. C'est juste a ce niveau que je cherche a
comprendre pourquoi il ne veut pas le prendre. Les 2 éléments sont bien
là mais ne semble pas être vu par le selecteur de node.
Francois
"Lionel LASKE" a écri
t dans le message de news:
Je pense qu'il manque le niveau "item". Tes requêtes XPath devraient
plutôt référencer "//channel/item/title" et "//channel/item/link". Voici
un exemple de parcours d'un flux RSS:
XPathDocument xpDoc = new XPathDocument(txtRSSURL.Text);
XPathNavigator xpNav = xpDoc.CreateNavigator();
XPathExpression expr >>> xpNav.Compile("/rss/channel/item");
XPathExpression titleExpr =
xpNav.Compile("string(title/text())");
XPathExpression linkExpr = xpNav.Compile("string(link/text())");
XPathExpression descExpr =
xpNav.Compile("string(description/text())");
XPathNodeIterator iter = xpNav.Select(expr);
while (iter.MoveNext())
{
string title = (string)iter.Current.Evaluate(titleExpr);
string link = (string)iter.Current.Evaluate(linkExpr);
string desc = (string)iter.Current.Evaluate(descExpr);
...
}
L'exemple utilise un XPathNavigator plutôt qu'un Select sur un
XmlDocument, c'est généralement plus performant.
Lionel.
"Francois Soucy" a écrit dans le message de news:Bonjour à tous,
Je permet sur mon site à tous les utilisateurs
d'ajouter un lien "RSS" pour lire les nouvelles de leurs choix. Pour le
moment avec les fichiers rss standart la validation semble bien
fonctionner. Sauf pour un exemple particulier. Celui de Slashdot qui
pourtant est dans les norme du RSS. Voici le lien de leur fichier rss:
http://slashdot.org/index.rss
Et voila comment je validais les autres fichiers:
'###############
Private Function ValiderRss() as Boolean
Dim Out As String
Dim XmlDoc As New System.Xml.XmlDocument
XmlDoc.Load(Me.TxtUrl.Text)
Dim XPath As String
XPath = "//channel/title" 'Récupérer le titre
Dim NodeTitle As System.Xml.XmlNode = XmlDoc.SelectSingleNode(XPath)
XPath = "//channel/link" 'Récupérer le lien
Dim NodeUrl As System.Xml.XmlNode = XmlDoc.SelectSingleNode(XPath)
'Et on commence à afficher
Out = "<a href=" & NodeUrl.InnerText & ">" & NodeTitle.InnerText &
"</a><BR><BR>"
............. etc
'######################
Avec le fichier de Slashdot les nodes NodeTitle et NodeUrl sont
toujours à Nothing et je ne vois vraiment pas pourquoi puisque cela
fonctionne parfaitement avec les autres site. Est-ce que c'est parce
qu'ils ont des genres de syntaxes du genre : <channel
rdf:about="http://slashdot.org/"> ? Est-ce le rdf:about qui change les
choses? Je vous avous que c'est un peu dure de faire le déboguage de
cela et je ne sais plus où je dois commencer pour tout vérifier la
machine. Avez-vous une idée?
Merci,
Francois
Essaye avec RssFeed:
http://www.gotdotnet.com/workspaces/workspace.aspx?idj116a0f-66c4-4f91-9e13-a0d00960b9ad
Il propose cette fonctionnalité sous forme d'un user control ASP.NET.
Lionel.
"Francois Soucy" <Root@127.0.0.1> a écrit dans le message de news:
eRUsW3kBFHA.2316@TK2MSFTNGP15.phx.gbl...
Non il ne me manque pas le niveau "item" puisque les éléments "title" et
"link se retrouve aussi à la base du document. Regard le lien que j'ai
envoyé avec le post original. C'est juste a ce niveau que je cherche a
comprendre pourquoi il ne veut pas le prendre. Les 2 éléments sont bien
là mais ne semble pas être vu par le selecteur de node.
Francois
"Lionel LASKE" <llaske@c2s.fr> a écri
t dans le message de news:
eN4eFodBFHA.3592@TK2MSFTNGP11.phx.gbl...
Je pense qu'il manque le niveau "item". Tes requêtes XPath devraient
plutôt référencer "//channel/item/title" et "//channel/item/link". Voici
un exemple de parcours d'un flux RSS:
XPathDocument xpDoc = new XPathDocument(txtRSSURL.Text);
XPathNavigator xpNav = xpDoc.CreateNavigator();
XPathExpression expr >>> xpNav.Compile("/rss/channel/item");
XPathExpression titleExpr =
xpNav.Compile("string(title/text())");
XPathExpression linkExpr = xpNav.Compile("string(link/text())");
XPathExpression descExpr =
xpNav.Compile("string(description/text())");
XPathNodeIterator iter = xpNav.Select(expr);
while (iter.MoveNext())
{
string title = (string)iter.Current.Evaluate(titleExpr);
string link = (string)iter.Current.Evaluate(linkExpr);
string desc = (string)iter.Current.Evaluate(descExpr);
...
}
L'exemple utilise un XPathNavigator plutôt qu'un Select sur un
XmlDocument, c'est généralement plus performant.
Lionel.
"Francois Soucy" <Root@127.0.0.1> a écrit dans le message de news:
utsoBGbBFHA.824@TK2MSFTNGP11.phx.gbl...
Bonjour à tous,
Je permet sur mon site à tous les utilisateurs
d'ajouter un lien "RSS" pour lire les nouvelles de leurs choix. Pour le
moment avec les fichiers rss standart la validation semble bien
fonctionner. Sauf pour un exemple particulier. Celui de Slashdot qui
pourtant est dans les norme du RSS. Voici le lien de leur fichier rss:
http://slashdot.org/index.rss
Et voila comment je validais les autres fichiers:
'###############
Private Function ValiderRss() as Boolean
Dim Out As String
Dim XmlDoc As New System.Xml.XmlDocument
XmlDoc.Load(Me.TxtUrl.Text)
Dim XPath As String
XPath = "//channel/title" 'Récupérer le titre
Dim NodeTitle As System.Xml.XmlNode = XmlDoc.SelectSingleNode(XPath)
XPath = "//channel/link" 'Récupérer le lien
Dim NodeUrl As System.Xml.XmlNode = XmlDoc.SelectSingleNode(XPath)
'Et on commence à afficher
Out = "<a href=" & NodeUrl.InnerText & ">" & NodeTitle.InnerText &
"</a><BR><BR>"
............. etc
'######################
Avec le fichier de Slashdot les nodes NodeTitle et NodeUrl sont
toujours à Nothing et je ne vois vraiment pas pourquoi puisque cela
fonctionne parfaitement avec les autres site. Est-ce que c'est parce
qu'ils ont des genres de syntaxes du genre : <channel
rdf:about="http://slashdot.org/"> ? Est-ce le rdf:about qui change les
choses? Je vous avous que c'est un peu dure de faire le déboguage de
cela et je ne sais plus où je dois commencer pour tout vérifier la
machine. Avez-vous une idée?
Merci,
Francois
Essaye avec RssFeed:
http://www.gotdotnet.com/workspaces/workspace.aspx?idj116a0f-66c4-4f91-9e13-a0d00960b9ad
Il propose cette fonctionnalité sous forme d'un user control ASP.NET.
Lionel.
"Francois Soucy" a écrit dans le message de news:Non il ne me manque pas le niveau "item" puisque les éléments "title" et
"link se retrouve aussi à la base du document. Regard le lien que j'ai
envoyé avec le post original. C'est juste a ce niveau que je cherche a
comprendre pourquoi il ne veut pas le prendre. Les 2 éléments sont bien
là mais ne semble pas être vu par le selecteur de node.
Francois
"Lionel LASKE" a écri
t dans le message de news:
Je pense qu'il manque le niveau "item". Tes requêtes XPath devraient
plutôt référencer "//channel/item/title" et "//channel/item/link". Voici
un exemple de parcours d'un flux RSS:
XPathDocument xpDoc = new XPathDocument(txtRSSURL.Text);
XPathNavigator xpNav = xpDoc.CreateNavigator();
XPathExpression expr >>> xpNav.Compile("/rss/channel/item");
XPathExpression titleExpr =
xpNav.Compile("string(title/text())");
XPathExpression linkExpr = xpNav.Compile("string(link/text())");
XPathExpression descExpr =
xpNav.Compile("string(description/text())");
XPathNodeIterator iter = xpNav.Select(expr);
while (iter.MoveNext())
{
string title = (string)iter.Current.Evaluate(titleExpr);
string link = (string)iter.Current.Evaluate(linkExpr);
string desc = (string)iter.Current.Evaluate(descExpr);
...
}
L'exemple utilise un XPathNavigator plutôt qu'un Select sur un
XmlDocument, c'est généralement plus performant.
Lionel.
"Francois Soucy" a écrit dans le message de news:Bonjour à tous,
Je permet sur mon site à tous les utilisateurs
d'ajouter un lien "RSS" pour lire les nouvelles de leurs choix. Pour le
moment avec les fichiers rss standart la validation semble bien
fonctionner. Sauf pour un exemple particulier. Celui de Slashdot qui
pourtant est dans les norme du RSS. Voici le lien de leur fichier rss:
http://slashdot.org/index.rss
Et voila comment je validais les autres fichiers:
'###############
Private Function ValiderRss() as Boolean
Dim Out As String
Dim XmlDoc As New System.Xml.XmlDocument
XmlDoc.Load(Me.TxtUrl.Text)
Dim XPath As String
XPath = "//channel/title" 'Récupérer le titre
Dim NodeTitle As System.Xml.XmlNode = XmlDoc.SelectSingleNode(XPath)
XPath = "//channel/link" 'Récupérer le lien
Dim NodeUrl As System.Xml.XmlNode = XmlDoc.SelectSingleNode(XPath)
'Et on commence à afficher
Out = "<a href=" & NodeUrl.InnerText & ">" & NodeTitle.InnerText &
"</a><BR><BR>"
............. etc
'######################
Avec le fichier de Slashdot les nodes NodeTitle et NodeUrl sont
toujours à Nothing et je ne vois vraiment pas pourquoi puisque cela
fonctionne parfaitement avec les autres site. Est-ce que c'est parce
qu'ils ont des genres de syntaxes du genre : <channel
rdf:about="http://slashdot.org/"> ? Est-ce le rdf:about qui change les
choses? Je vous avous que c'est un peu dure de faire le déboguage de
cela et je ne sais plus où je dois commencer pour tout vérifier la
machine. Avez-vous une idée?
Merci,
Francois