【发布时间】:2013-09-26 14:38:18
【问题描述】:
我有一个从外部 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
}
}
【问题讨论】:
-
在我对这个问题的回答中:stackoverflow.com/questions/10412494/… 我给出了一个从 URL 返回 XmlDocument 的通用方法。转换为返回 XDocument 需要最少的工作。
-
如果这是标准 RSS 格式(RSS 或 Atom),您还需要在 LINQ 语句中处理命名空间。
-
请查看我根据您的 cmets 进行的新编辑
-
@Menew - 你得到什么错误?您可以发布从 URL 收到的 XML 或其中的一部分吗?
标签: c# xml asp.net-mvc linq