Ich habe erstellt C# Console-Anwendung, die mehrere RSS-Feed-URLs lesen, dann Werte nehmen und in die Datenbank.So prüfen Sie mit C# Console mehrere rss Feed-Leser
Jetzt habe ich Probleme mit Wordpress RSS Feed Generator wo Artikel Bild ist mit Tag Gehäuse.
Wie Artikel Artikel URL zu nehmen und zu analysieren, wenn in der Quelle vorhanden Gehäuse, mit meinem Code Ich lese alle Bild URLs, die in Beschreibung Tags ist.
Hier ist mein Code, der in der Datenbank lesen und schreiben:
using (var xmlReader = XmlReader.Create(izvorURLX))
{
var rssFormatter = new Rss20FeedFormatter();
rssFormatter.ReadFrom(xmlReader);
foreach (SyndicationItem syndicationItem in rssFormatter.Feed.Items)
{
Console.OutputEncoding = Encoding.UTF8;
string link = syndicationItem.Links[0].Uri.ToString();
var statCat1 = Convert.ToString((""));
foreach (var kategorija in syndicationItem.Categories.Take(1))
{
statCat1 = (kategorija.Name);
}
var rr = syndicationItem.AttributeExtensions.Values;
var LastIZV1 = rssFormatter.Feed.LastUpdatedTime.DateTime;
var SiteTitle = rssFormatter.Feed.Title.Text;
var itemFD = Convert.ToString(syndicationItem.Summary.Text);
string clitemFD = Regex.Replace(itemFD, @"<[^>]*>", String.Empty, RegexOptions.IgnoreCase).Trim();
var ItemItem = Convert.ToString(rssFormatter.Feed.Items);
var ff = rssFormatter.Feed.Items.ToString();
var datumIZV0 = syndicationItem.PublishDate.DateTime;
var nula = Convert.ToDateTime("01.01.0001 00:00:00");
var datumIZVX = Convert.ToDateTime(DateTime.Now);
if (datumIZV0 == nula)
{
datumIZVX = Convert.ToDateTime(DateTime.Now);
}
else
{
datumIZVX = Convert.ToDateTime(datumIZV0);
}
XmlDocument doc = new XmlDocument();
doc.Load(izvorURLX);
var imgSRC = Convert.ToString("");
var reg1 = new Regex("src=(?:\"|\')?(?<imgSrc>[^>]*[^/].?:bmp|jpg|jpeg|gif|png))(?:\"|\')?");
var match1 = reg1.Match(itemFD);
if (match1.Success)
{
Uri UrlImage = new Uri(match1.Groups["imgSrc"].Value, UriKind.Absolute);
imgSRC = UrlImage.ToString();
}
var feedXML = Convert.ToString(izvorURLX);
int KatX = Convert.ToInt32(KatIzv);
var statTitle = Convert.ToString(syndicationItem.Title.Text);
var statLink = Convert.ToString(syndicationItem.Links[0].Uri);
SqlConnection conn = new SqlConnection("Server=localhost\\SQLEXPRESS;Database=RSSFeedAgregator;Integrated Security=true");
conn.Open();
var FeedID = Convert.ToInt32(0);
var LastinDB = Convert.ToDateTime("01.01.0001 00:00:00");
string FeedInDB = Convert.ToString("a");
using (SqlCommand cmdX2 = new SqlCommand("SELECT Feed_ID, Izvor, LastUpd, feed, Kategorija, iID, izvTitle, statCat FROM [dbo].[tbl_feeds]", conn))
{
SqlDataReader readerX = cmdX2.ExecuteReader();
while (readerX.Read())
{
Console.OutputEncoding = Encoding.UTF8;
var feedTxt = Convert.ToString(readerX["feed"]);
FeedID = Convert.ToInt32(readerX["Feed_ID"]);
LastinDB = Convert.ToDateTime(readerX["LastUpd"]);
FeedInDB = Convert.ToString(readerX["feed"]);
}
readerX.Close();
}
bool inList = DB.Contains(clitemFD);
var statIMG = Convert.ToString("");
if (inList == false)
{
Console.WriteLine("false: Ne postoi");
using (SqlCommand cmd1 = new SqlCommand("INSERT INTO tbl_feeds VALUES (" + "@Izvor, @LastUpd, @feed, @Kategorija, @iID, @izvTitle, @statCat, @statTitle, @statLink, @statImage)", conn))
{
cmd1.Parameters.AddWithValue("@Izvor", feedXML);
cmd1.Parameters.AddWithValue("@LastUpd", datumIZVX);
cmd1.Parameters.AddWithValue("@feed", clitemFD);
cmd1.Parameters.AddWithValue("@Kategorija", KatX);
cmd1.Parameters.AddWithValue("@iID", IzvID);
cmd1.Parameters.AddWithValue("@izvTitle", SiteTitle);
cmd1.Parameters.AddWithValue("@statCat", statCat1);
cmd1.Parameters.AddWithValue("@statTitle", statTitle);
cmd1.Parameters.AddWithValue("@statLink", statLink);
cmd1.Parameters.AddWithValue("@statImage", imgSRC);
int rows = cmd1.ExecuteNonQuery();
Console.WriteLine("Uspesno dodadeno nov zapis !");
}
conn.Close();
}
else
{
Console.WriteLine("true: Postoi");
}
}
}
Sorry für meinen langen Code, aber ich etwas besser zu verstehen, und ich hoffe, dass mir jemand helfen kann.
AKTUALISIERT
Auch ich diesen Code gefunden, lesen Sie diesen Code Enclosure URL, sondern nur wiederholen, um zu lesen und wenn Quelle 10 Artikel haben, dieser Code 10-mal alle 10 img URL zu lesen, und in der Datenbank speichern nur Letzter.
XmlNodeList items = doc.SelectNodes("//item") ;
for (int i = 0; i < items.Count; i++)
{
var encImg = (items[i].SelectSingleNode("enclosure").Attributes["url"].Value);
}
Jeder kann diesen Code ändern, um Eigenschaft zu arbeiten?
Tu das nicht. Sie müssen einen HTML-Parser verwenden. – SLaks
Auch Ihre 'Convert.ToString' Aufrufe machen überhaupt keinen Sinn. – SLaks
Verwenden Sie 'First()' anstelle Ihrer seltsamen Schleife. – SLaks