0

xml ファイルからタグを取得してテキストブロックに入れたいと考えています。

私のコードは:

    private async void btnPlantel_Click(object sender, RoutedEventArgs e)
    {
         try
         {
             var doc = XDocument.Parse(txtnome.Text);
             var doc2 = XDocument.Parse(txtshirtnumber.Text);
             StorageFolder storageFolder = Package.Current.InstalledLocation;
             StorageFile storageFile = await storageFolder.GetFileAsync("players2.xml");

             txtnome.Text = await FileIO.ReadTextAsync(storageFile, Windows.Storage.Streams.UnicodeEncoding.Utf8);
             txtshirtnumber.Text = await FileIO.ReadTextAsync(storageFile, Windows.Storage.Streams.UnicodeEncoding.Utf8);

             txtnome.Text = (string)doc.Root.Element("name");
             txtshirtnumber.Text = (string)doc2.Root.Element("shirtnumber");

         }
         catch (Exception ex)
         {
             txterror.Text = ex.Message;
         }
}

およびxmlは次のとおりです。

   <player>
     <name>Ricardo Ferreira Rodrigues</name>
     <shirtnumber>1</shirtnumber>
   </player>

しかし、txtboxに表示されるのは「ルート要素がありません」というエラーだけです。誰かが私を助けることができますか?

4

1 に答える 1

3

ファイルからロードする前にxml( XDocument.Parse ) を解析しようとしました。ファイルを 2 回読み取る必要はありません。xml を 2 回解析する必要はありません。

実際、すべてのコードはスクランブルされています。次のようになるはずです(未テスト)

 StorageFolder storageFolder = Package.Current.InstalledLocation;
 StorageFile storageFile = await storageFolder.GetFileAsync("players2.xml");

 string xml = await FileIO.ReadTextAsync(storageFile, Windows.Storage.Streams.UnicodeEncoding.Utf8);

 var doc = XDocument.Parse(xml);

 txtnome.Text = (string)doc.Root.Element("name");
 txtshirtnumber.Text = (string)doc.Root.Element("shirtnumber");

手順:

  • テキストファイルを読む
  • XDocument.Parse を使用して xml を解析します
  • テキストボックスに xml ドキュメントの値を入力します
于 2013-09-02T17:34:49.857 に答える