1

VS2010 C# を使用しています。XDocument 経由で XML ファイルを読み込んでいます。XML データをクラスまたは変数にロードし、そのデータにアクセスして Windows フォームのテキスト ボックスに出力できるようにする必要があります。

私はいくつかのことを試しました。XDocument.Parse は XML を取得しています。これは、テキスト ボックスに出力でき、すべてが正しいためです。ただし、そこから、データはクラスまたは変数に読み込まれていないようです。(カウント 0、要素が null など)。

私はこのチュートリアルに従っていましたが、今ではかなり古いです: http://tech.pro/tutorial/743/introduction-to-linq-simple-xml-parsing

1)データをリストにロードし、2)サブ要素にアクセスしてテキストボックスに出力する方法を教えてもらえますか?

コード:

XDocument xmlResponse = XDocument.Parse( e.Result );

var hds =
 (from hdi in xmlResponse.Descendants("HDInfo")
  select new HDInfo
  {
   freeSpace = (long)hdi.Element("freeSpace"),
   percentFree = (float)hdi.Element("percentFree"),
   volume = (String)hdi.Element("volume"),
  });

XML:

<ArrayOfHDInfo xmlns="http://schemas.datacontract.org/2004/07/project" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
 <HDInfo>
  <freeSpace>187783532544</freeSpace>
  <percentFree>75.1457443</percentFree>
  <volume>C:\</volume>
 </HDInfo>
 <HDInfo>
  <freeSpace>583875145728</freeSpace>
  <percentFree>77.83411</percentFree>
  <volume>D:\</volume>
 </HDInfo>
</ArrayOfHDInfo>
4

1 に答える 1

2

XNamespaceクエリ内でオブジェクトを使用する必要があります。

var ns = XNamespace.Get("http://schemas.datacontract.org/2004/07/project");

var hds =
 (from hdi in xmlResponse.Descendants(ns + "HDInfo")
  select new HDInfo
  {
   freeSpace = (long)hdi.Element(ns + "freeSpace"),
   percentFree = (float)hdi.Element(ns + "percentFree"),
   volume = (String)hdi.Element(ns + "volume"),
  });
于 2013-07-08T21:52:20.823 に答える