Lector de noticias
Fuente: blogs.com/feiyun0112/archive/2005/11/09/272619.html
Utilice C# para crear un lector de noticias ("Computer News" Número 10, 14 de marzo de 2005)
1. Comprenda la estructura antes de continuar
Para extraer fácilmente información RSS, es natural comprender su estructura. Como dice el refrán, "Conócete a ti mismo y al enemigo y nunca estarás en peligro". Comprenda la estructura antes de actuar
Si desea extraer información RSS fácilmente, debe comprender su estructura. Como dice el refrán: "Conócete a ti mismo y al enemigo, y nunca serás derrotado en cien batallas. ".
1. Estructura RSS
Primero abrimos un enlace RSS de Baidu News. Si abrimos algunos enlaces RSS más de otros sitios web, encontraremos que sus estructuras son más o menos las mismas. . Lo que le explicamos en RSS Revealing (en la foto de arriba) es en realidad un archivo XML compilado e implementado.
Para facilitar el procesamiento de dichos documentos XML, en este artículo utilizamos C# como lenguaje de desarrollo.
Después de analizar todo el enlace RSS, conocemos la estructura general del RSS, como se muestra en la Figura 1.
2. Principio de extracción
Después de conocer la estructura, también necesitamos saber el significado de cada parte de la estructura. En la Figura 1, el nodo RSS indica que el archivo RSS actual es un archivo RSS, que consta del nodo CHANNEL y sus subnodos, algunos de los cuales proporcionan información sobre el canal en sí, como el título que indica el nombre del canal ("Baidu Noticias de Internet").
El nodo CANAL contiene múltiples nodos secundarios de ITEM. El nodo ITEM es la parte que debe procesarse en el programa porque corresponde a la información de cada noticia real. Cada nodo ITEM proporciona detalles de la noticia. a través de sus nodos secundarios, información, por ejemplo, título representa el título de la noticia ("¡Microsoft IM es el camino a seguir!"), y enlace corresponde al enlace real de la noticia.
Las especificaciones específicas de RSS se pueden encontrar en http://blogs.law.harvard.edu/tech/rss
Una vez que las entiendas, programar no es difícil. Simplemente extraemos y mostramos la información en CANAL y ARTÍCULO. Ahora, veamos cómo hacer esto.
2. Crear un programa para leer noticias.
Después de tener una cierta comprensión de RSS, comenzamos a escribir el programa. Primero, todavía necesitamos una interfaz más simple. Cree un nuevo proyecto Win Form, coloque una etiqueta en el formulario, un cuadro de texto txtURL para ingresar el enlace RSS (es decir, la dirección del sitio web que contiene el enlace RSS), un botón bnRead para leer noticias y un árbol de control TreeView treeRSS para para mostrar noticias leídas.
1. Definir la estructura de carga
Con base en la estructura RSS analizada anteriormente, primero creamos una clase rss y la usamos para cargar la información del CANAL y del ARTÍCULO en el enlace RSS.
El código es el siguiente:
public class rss
{public struct Channel
{public string Title;
public Hashtable Items;
}
elemento de estructura pública
{título de cadena pública;
descripción de cadena pública;
cadena pública Enlace;
}
}
La estructura del Canal almacenará la información de todos los nodos secundarios contenidos en el nodo CANAL. El campo miembro Elementos es una colección Hashtable. El programa almacenará el Elemento. La estructura se agrega a la colección como un objeto para almacenar todos los nodos de Elemento en el Canal. Aquí solo leo nodos limitados, los lectores pueden expandir toda la definición de la estructura de acuerdo con las necesidades reales.
2. Obtener información de noticias a partir de enlaces RSS
Ahora podemos comenzar a escribir la función de lectura para colocar la información RSS extraída en la estructura diseñada anteriormente.
C# proporciona clases especializadas para acceder a XML, lo que facilita la lectura del contenido RSS. El código es el siguiente:
XmlTextReader Reader = new XmlTextReader(URL);
XmlDocument xmlDoc= new XmlDocument();
xmlDoc.Load(Reader);
Utilice Finalmente, primero busque el nodo Canal a través de la función FoundChildNode.
Private XmlNode FoundChildNode(XmlNode Node,string Name)
{XmlNode childlNode = null;
for (int i=0;i < Node.ChildNodes. ChildNodes[i];
return childlNode;}}
return childlNode;}
XmlNode rssNode = FoundChildNode(xmlDoc, "rss");
.Items.Count,item );
break;}
}}
Si el resultado es un nodo secundario del nodo del artículo, llame a la función getRssItem y recorra nuevamente el nodo secundario, complete la estructura del Elemento con el contenido de sus nodos secundarios y luego los agregue a la colección de Elementos de la estructura del Canal. Dado que al programa no le importa el valor clave agregado a la colección. sólo necesita que sea un valor único. Pasé la propiedad Count.
3. Mostrar la información leída en el programa
Después de leer el contenido RSS, es el momento de mostrar la información al usuario. Estamos usando métodos básicos de TreeView aquí, iterando a través de la colección de elementos de la estructura del canal y agregando sus títulos a TreeView.
privado void ViewRss(canal rss.Channel)
{treeRss.BeginUpdate();
treeRss.Nodes.Clear();
TreeNodechannelNode =treeRss.Nodes.Add(channel.Title
channelNode.ExpandAll();
treeRss.EndUpdate();}
Además, también podemos establecer la propiedad Etiqueta de cada nodo secundario en TreeView en su enlace correspondiente. De esta manera, cuando se selecciona un nodo secundario, podemos leer la propiedad Etiqueta para acceder a información específica.
árbol vacío privadoRss_AfterSelect(remitente del objeto, System.Windows.Forms.TreeViewEventArgs e)
{TreeNode itemNode=e.string URL=itemNode.Tag.ToString();
if (URL.Length!=0)
System.Diagnostics.Process.Start( URL);}
El programa se ejecuta como se muestra en la Figura 2.
III.Resumen
Qué tal, un sencillo lector de noticias RSS se puede completar fácilmente como se mencionó anteriormente. Aunque todavía deja mucho que desear, si aprendemos el método básico de extracción de información de enlaces RSS a través de este ejemplo, ¡es suficiente!