从外部网站获取 xml 数据

本文关键字:数据 xml 获取 网站 从外部 | 更新日期: 2023-09-27 18:33:04

我有一个应用程序,可以从外部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);
}

我遇到的问题是,我在代码中的哪个位置使用 URL 而不是文件名:

XElement xelement = XElement.Load("..''..''Employees.xml");

应该是:

XElement xelement = XElement.Load("http://www.test.com/file.xml"); 

我在想也许我应该将内容存储到数组或其他东西中,并检查以确保 searchString 是否在其中?

不确定如何进行以及最好使用什么,也许我什至不应该使用 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
            }
        }

从外部网站获取 xml 数据

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

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

示例(仅供说明,出于对 Pete 的热爱添加一些错误处理):

WebRequest request = WebRequest.Create("http://www.test.com/file.xml");
WebResponse response = request.GetResponse();
Stream dataStream = response.GetResponseStream();
XElement doc = Xelement.Load(dataStream);