¿Cómo seleccionar nodos XML con espacios de nombres XML desde un XmlDocument?

mi código intenta tomar datos de la fuente RSS de un sitio web. Captura los nodos bien, pero cuando intenta capturar los datos de un nodo con dos puntos, se bloquea y muestra el error “Namespace Manager o XsltContext needed. Esta consulta tiene un prefijo, variable o función definida por el usuario”. El código se muestra a continuación:

WebRequest request = WebRequest.Create("http://buypoe.com/external.php?type=RSS2&lastpost=true"); WebResponse response = request.GetResponse(); StringBuilder sb = new StringBuilder(""); System.IO.StreamReader rssStream = new System.IO.StreamReader(response.GetResponseStream(), System.Text.Encoding.GetEncoding("utf-8")); XmlDocument rssDoc = new XmlDocument(); rssDoc.Load(rssStream); XmlNodeList rssItems = rssDoc.SelectNodes("rss/channel/item"); for (int i = 0; i < 5; i++) { XmlNode rssDetail; rssDetail = rssItems.Item(i).SelectSingleNode("dc:creator"); if (rssDetail != null) { user = rssDetail.InnerText; } else { user = ""; } } 

Entiendo que necesito definir el espacio de nombres, pero no estoy seguro de cómo hacerlo. La ayuda sería apreciada

Debe declarar el prefijo de espacio de nombres dc utilizando un XmlNamespaceManager antes de poder usarlo en expresiones XPath:

 XmlDocument rssDoc = new XmlDocument(); rssDoc.Load(rssStream); XmlNamespaceManager nsmgr = new XmlNamespaceManager(rssDoc.NameTable); nsmgr.AddNamespace("dc", "http://purl.org/dc/elements/1.1/"); XmlNodeList rssItems = rssDoc.SelectNodes("rss/channel/item"); for (int i = 0; i < 5; i++) { XmlNode rssDetail = rssItems[i].SelectSingleNode("dc:creator", nsmgr); if (rssDetail != null) { user = rssDetail.InnerText; } else { user = ""; } }