我有一个应用程序,它从外部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
}
}
答案 0 :(得分:3)
除了提供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);