从远程XML文件中检索数据并添加到datagrid

时间:2012-12-07 06:02:56

标签: c# xml

我有一个XML文件,我没有写入权限。我在线检索它。

我有下面的代码,工作正常,但我不能继续前进..

using System.Data;
using System.Xml.Linq;


try
{
    XDocument XMLFile = XDocument.Load(@"http://Domain/path/to/file.xml");
    MessageBox.Show("Remote File Loaded Successfully ...");
    var items = XMLFile.Descendants("item");
    int i = 0;
    foreach (var item in items)
    {
        i++;
        //var title = item.Descendants("title");
        //MessageBox.Show(title.ToString());
    }
    MessageBox.Show("Items Found: " + i);
}
catch(exception ex)
{
    MessageBox.Show("Error: " + ex.Message.ToString());
    MessageBox.Show("Error: " + ex.InnerException.ToString());
}

我面临的问题是foreach循环。每个根元素项都有一些子元素。我无法弄清楚如何检索这些元素!!

另外,我有一个网格视图,我想将结果添加到它,我该如何实现?

感谢。

修改

XML示例:

<item>
    <title>Title</title>
    <link>http://domain/link</link>
    <description>Some Text</description>
    <pubDate>Wed, 05 Dec 2012 01:29:37 -0500</pubDate>
    <guid isPermaLink="false">Domain_text_INTEGER</guid>
    <category domain="http://domain/link">A</category>
    <category domain="http://domain/link">B</category>
    <category domain="http://domain/link">C</category>
    <category domain="http://domain/link">D</category>
    <category domain="http://domain/link">E</category>
    <coop:keyword>A</coop:keyword>
    <coop:keyword>B</coop:keyword>
    <coop:keyword>C</coop:keyword>
    <coop:keyword>D</coop:keyword>
    <coop:keyword>E</coop:keyword>
    <coop:keyword>Text</coop:keyword>
    <coop:keyword>Text</coop:keyword>
    <coop:keyword>Text</coop:keyword>
    <coop:keyword>Text</coop:keyword>
    <coop:keyword>Text</coop:keyword>
    <coop:keyword>Text</coop:keyword>
    <coop:keyword>Text</coop:keyword>
    <coop:keyword>Text</coop:keyword>
    <coop:keyword>Text</coop:keyword>
    <coop:keyword>Text</coop:keyword>
    <coop:keyword>text integer</coop:keyword>
    <coop:keyword>Text</coop:keyword>
</item>

我需要它:

  • 标题
  • 链接
  • 描述
  • pubdate的
  • Guid(INTEGER)&lt; =我可以从字符串OR text integer
  • 中获取整数

感谢。

2 个答案:

答案 0 :(得分:0)

因此,在您的XMLfile XDocument上,您已经拥有了后代。

同时创建一个集合

List<someobject> list = new List<someobject>();

所以在你的循环中

foreach (var item in items)
{
    var someObject = new SomeObject()
    {
        Title = item.Element("title").Value
    }
}

然后将您的集合绑定到网格

答案 1 :(得分:0)

MSDN topic可以帮到你。在MSDN上,他们会发布您问题的Walk-through。两个链接都建议使用数据集:

DataSet dsAuthors = new DataSet("authors");
string filePath = "Complete path where you saved the XML file";
dsAuthors.ReadXml(filePath);
dataGrid1.DataSource = dsAuthors;
dataGrid1.DataMember = "authors";
dataGrid1.CaptionText = dataGrid1.DataMember;

我只是复制/粘贴一个例子。您需要根据自己的需要对其进行修改。