【问题标题】:The Code return error A column named 'link' already belongs代码返回错误名为“链接”的列已属于
【发布时间】:2013-08-13 12:41:58
【问题描述】:
 public partial class Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

        try
        {
            DataSet ds = new DataSet();
            ds.ReadXml(@"http://tecnologia.ig.com.br/rss.xml");

            XmlDocument doc = new XmlDocument();
            XmlUrlResolver resolver = new XmlUrlResolver();
            resolver.Credentials = new System.Net.NetworkCredential("bruno", "*****");//intentionally hiding real password from stackoverflow
            doc.XmlResolver = resolver;

            foreach (DataRow dr in ds.Tables["item"].Rows)
            {
                Response.Write("Item TITLE: " + dr["title"].ToString() + "<br />");
                Response.Write("Descrição : " + dr["description"].ToString() + "<br />");
                Response.Write("Data de Publicação: " + dr["pubDate"].ToString() + "<br />");
            }
        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }
    }
}

我执行代码,系统返回两个错误
1 - 名为“链接”的列已属于此数据表:无法将嵌套表名称设置为相同名称。 2 - 远程服务器返回错误:(407) 需要代理身份验证。

谢谢!

【问题讨论】:

  • 第一个错误可能与第二个错误有关。在此处查看有关您的设置的一些信息,这些信息可能会删除第二个错误,希望是第一个错误:stackoverflow.com/questions/1524566/…

标签: c# asp.net .net xml


【解决方案1】:

只是提供一个阅读 RSS Feed 的想法:

  1. 创建一个 WebRequest 和 WebReponse 对象:

    WebRequest request=WebRequest.Create("your url");
    WebReponse response=request.GetRespose();
    
  2. 创建一个 XML 文档并使用来自响应对象的流加载 XML 文档:

    Stream rssStream=response.GetResponseStream();
    XMLDocument xmlDoc=new XMLDocument();
    xmlDoc.Load(rssStream);
    
  3. 使用 XMLNodeList 从 XMLDocument 中检索匹配的 XML 节点:

    XmlNodeList xmlNodeList = xmlDoc.SelectNodes("your XPath expression");
    
  4. 现在您可以循环 RSS 提要项以获得您想要的内容:

     for (int i = 0; i < xmlNodeList.Count; i++)
        {
            XmlNode xmlNode;
    
            xmlNode = xmlNodeList.Item(i).SelectSingleNode("ProductName");
            //xmlNode.InnerText;
        }
    

【讨论】:

  • 这是我会采用的建议,而不是将其解析为数据集
  • System.Net.WebProxy proxy = new System.Net.WebProxy(@"ip:door"); proxy.Credentials = new System.Net.NetworkCredential("User", "Pass"); System.Net.WebRequest.DefaultWebProxy = 代理;我解决了问题 1... 问题 2 与 rss 网站有关(rss/XML 已损坏)我刚刚更改了链接并且它有效,无论如何谢谢
【解决方案2】:

第二个问题:

您可能有一个公司代理,请尝试在 web.config 中使用它:

<system.net>
  <defaultProxy useDefaultCredentials="true" />
</system.net>

至于第一个问题:

http://forums.asp.net/t/1220157.aspx/1

这个问题很可能是因为 XML 将允许重复节点,而数据表不允许重复列,因此您无法直接解析为数据表。

我建议在深入研究数据表路径之前对解析和使用 XML 数据进行一些研究

【讨论】:

    猜你喜欢
    • 2012-09-21
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 2014-05-19
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    • 2014-07-18
    相关资源
    最近更新 更多