0

XML を取得するときに、XML からアイテムを取得できないのはなぜだろうと思っています。

したがって、基本的には電話を使用して Web サービスに接続します。

XML は、ディレクトリ情報とファイル情報の TUPLE を返します。

<TupleOfArrayOfDirectoryInfoArrayOfFileInfoe_PmhuPqo xmlns="http://schemas.datacontract.org/2004/07/System"      xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
 <m_Item1 xmlns:a="http://schemas.datacontract.org/2004/07/System.IO">
<a:DirectoryInfo>
<OriginalPath xmlns="" xmlns:b="http://www.w3.org/2001/XMLSchema" i:type="b:string">AETN</OriginalPath>
<FullPath xmlns="" xmlns:b="http://www.w3.org/2001/XMLSchema"              i:type="b:string">C:\inetpub\wwwroot\Files\TEST1</FullPath>
 </a:DirectoryInfo>
 <a:DirectoryInfo>
<OriginalPath xmlns="" xmlns:b="http://www.w3.org/2001/XMLSchema" i:type="b:string">BT</OriginalPath>
<FullPath xmlns="" xmlns:b="http://www.w3.org/2001/XMLSchema"     i:type="b:string">C:\inetpub\wwwroot\Files\TEST2</FullPath>
</a:DirectoryInfo>
  <a:DirectoryInfo>
<OriginalPath xmlns="" xmlns:b="http://www.w3.org/2001/XMLSchema" i:type="b:string">Comixology</OriginalPath>
<FullPath xmlns="" xmlns:b="http://www.w3.org/2001/XMLSchema"   i:type="b:string">C:\inetpub\wwwroot\Files\TEST3</FullPath>
</a:DirectoryInfo>

Windows Phone 7 アプリケーションのコードでは、正しい URL から xml をダウンロードした後、このコードを使用しています。

void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) 
    { 
        if (e.Error == null) 
        { 
            XDocument xdoc = XDocument.Parse(e.Result, LoadOptions.None); 
            var folders = from query in xdoc.Descendants("DirectoryInfo") 
                          select new Folder 
                          { 
                              Name = (string)query.Element("OriginalPath"), 
                          }; 
            listBox2.ItemsSource = folders; 
        } 
    }       

このエラーが発生します:

'System.Collections.IEnumerable' does not contain a definition for 'System' and no extension method 'System' accepting a first argument of type 'System.Collections.IEnumerable' could be found (are you missing a using directive or an assembly reference?) 
4

1 に答える 1

2

エラーについてはわかりませんが、要素が返されないという問題は、要素に名前空間が適用されているDirectoryInfoため、それを使用して検索する必要があるためです。

void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) 
{ 
    if (e.Error == null) 
    { 
        XDocument xdoc = XDocument.Parse(e.Result, LoadOptions.None);

        XNamespace aNamespace = XNamespace.Get("http://schemas.datacontract.org/2004/07/System.IO");

        var folders = from query in xdoc.Descendants(aNamespace.GetName("DirectoryInfo")) 
                      select new Folder 
                      { 
                          Name = (string)query.Element("OriginalPath"), 
                      }; 
        listBox2.ItemsSource = folders; 
    } 
}
于 2012-04-13T10:11:22.547 に答える