0

書き込みアクセス権のない 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>

そこから必要なもの:

  • 題名
  • リンク
  • 説明
  • 公開日
  • Guid (INTEGER) <= 文字列またはテキスト整数から整数を取得できます

ありがとう。

4

2 に答える 2

0

したがって、XMLfile XDocumentには、子孫があります。

コレクションも作成する

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

だからあなたのループで

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

次に、コレクションをグリッドにバインドします

于 2012-12-07T10:15:33.660 に答える
0

このMSDN トピックが役に立ちます。MSDN には、問題のウォークスルーが掲載されています。両方のリンクは、これにデータセットを使用することを提案しています:

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;

例をコピーして貼り付けるだけです。目的に合わせて変更する必要があります。

于 2012-12-07T10:32:42.317 に答える