C# 从外部网站获取xml数据

C# 从外部网站获取xml数据,c#,xml,asp.net-mvc,linq,C#,Xml,Asp.net Mvc,Linq,我有一个应用程序,它可以从外部rss提要获取每日提要(这些数据是xml格式的)。 我有一个搜索表单,允许用户搜索我的数据库,但是,我想使用用户在我的网站上输入的搜索字符串来搜索这个rss提要,然后只提取相关内容,并在我的网站上显示 我一直在考虑使用linq读取xml文件,使用以下代码: XElement xelement = XElement.Load("..\\..\\Employees.xml"); IEnumerable<XElement> employees = xeleme

我有一个应用程序,它可以从外部rss提要获取每日提要(这些数据是xml格式的)。 我有一个搜索表单,允许用户搜索我的数据库,但是,我想使用用户在我的网站上输入的搜索字符串来搜索这个rss提要,然后只提取相关内容,并在我的网站上显示

我一直在考虑使用linq读取xml文件,使用以下代码:

XElement xelement = XElement.Load("..\\..\\Employees.xml");
IEnumerable<XElement> employees = xelement.Elements();
Console.WriteLine("List of all Employee Names along with their ID:");
foreach (var employee in employees)
{
    Console.WriteLine("{0} has Employee ID {1}",
        employee.Element("Name").Value,
        employee.Element("EmpId").Value);
}
应该是:

XElement xelement = XElement.Load("http://www.test.com/file.xml"); 
我在想也许我应该将内容存储到一个数组或其他什么东西中,并检查以确保搜索字符串是否在其中

我不知道如何继续,最好使用什么,也许我甚至不应该使用linq

下面是我的回答:

public void myXMLTest()
        {
            WebRequest request = WebRequest.Create("http://www.test.com/file.xml");
            WebResponse response = request.GetResponse();
            Stream dataStream = response.GetResponseStream();

            XElement xelement = XElement.Load(dataStream); 
            IEnumerable<XElement> employees = xelement.Elements();


            MessageBox.Show("List of all Employee Names along with their ID:");

            foreach (var employee in employees)
            {
                MessageBox.Show(employee.Name.ToString()); 
                /* the above message box gives me this:
                {http://www.w3.org/2005/Atom}id
                {http://www.w3.org/2005/Atom}name
                {http://www.w3.org/2005/Atom}title
                etc
                */
                MessageBox.Show(employee.Element("name").Value);//this gives me error
            }
        }
public void myXMLTest()
{
WebRequest=WebRequest.Create(“http://www.test.com/file.xml");
WebResponse=request.GetResponse();
Stream dataStream=response.GetResponseStream();
XElement=XElement.Load(数据流);
IEnumerable employees=xelement.Elements();
Show(“所有员工姓名及其ID的列表:”;
foreach(员工中的var员工)
{
Show(employee.Name.ToString());
/*上面的消息框告诉我:
{http://www.w3.org/2005/Atom}身份证
{http://www.w3.org/2005/Atom}名字
{http://www.w3.org/2005/Atom}头衔
等
*/
MessageBox.Show(employee.Element(“name”).Value);//这给了我一个错误
}
}

您将不得不做更多的工作,而不仅仅是提供一个URL

相反,您需要使用类获取XML文件。如果请求成功,则可以将其用作XElement.Load的参数

示例(仅供说明,为了爱Pete,请添加一些错误处理):


在回答这个问题时:我给出了一个从URL返回XmlDocument的通用方法。转换为返回XDocument需要最少的工作。如果这是标准RSS格式(RSS或Atom),您还需要处理LINQ语句中的名称空间。请查看我根据您的comments@Menew-你的错误是什么?您可以发布从URL收到的XML或其中的一部分吗?谢谢您的建议,请参阅我根据您建议的答案所做的编辑。@Menew您的编辑不会建议您要问的问题。最好再问一个问题。
public void myXMLTest()
        {
            WebRequest request = WebRequest.Create("http://www.test.com/file.xml");
            WebResponse response = request.GetResponse();
            Stream dataStream = response.GetResponseStream();

            XElement xelement = XElement.Load(dataStream); 
            IEnumerable<XElement> employees = xelement.Elements();


            MessageBox.Show("List of all Employee Names along with their ID:");

            foreach (var employee in employees)
            {
                MessageBox.Show(employee.Name.ToString()); 
                /* the above message box gives me this:
                {http://www.w3.org/2005/Atom}id
                {http://www.w3.org/2005/Atom}name
                {http://www.w3.org/2005/Atom}title
                etc
                */
                MessageBox.Show(employee.Element("name").Value);//this gives me error
            }
        }
WebRequest request = WebRequest.Create("http://www.test.com/file.xml");
WebResponse response = request.GetResponse();
Stream dataStream = response.GetResponseStream();
XElement doc = Xelement.Load(dataStream);