0

Linq to XML を使用して、分離ストレージから Xml ファイルを読み込もうとしています。

私のファイルには上記のコードが含まれています:

<?xml version="1.0" encoding="utf-8"?>
<lense>
   <days>14</days>
   <date>5/29/2012</date>
   <useToday>True</useToday>
   <dateUseToday />
</lense>

私はそのようなクエリを書きます:

using (var store = IsolatedStorageFile.GetUserStoreForApplication())
{
   using (IsolatedStorageFileStream isoStream = new  IsolatedStorageFileStream("Lenses.xml", FileMode.Open, store))
   {
      var custs = from c in XElement.Load(isoStream).Elements("Lense")c;
   }
}

しかし、私は次のエラーがあります:

ルート要素がありません

どうしてか分かりません ?説明して助けてもらえますか?


ご協力いただきありがとうございます!

しかし、次のコードを試すと、同じルート要素エラーが発生します。

var custs = from c in XDocument.Load(isoStream).Elements("Lense")
            select c;

このコードを使用して、分離ストレージ内の xml ファイル ストアを確認します。

using (StreamReader reader = new StreamReader(store.OpenFile("Lenses.xml", FileMode.Open)))
{
    MessageBox.Show(reader.ReadToEnd());
}

また、xml ファイルには要素が 1 つだけ含まれています。

<?xml version="1.0" encoding="utf-8"?>
<lense>
   <days>14</days>
   <date>5/29/2012</date>
   <useToday>True</useToday>
   <dateUseToday />
</lense>

手伝ってくれてありがとう !


XmlReader を使用して xml ドキュメントを操作できることを知っています。

using (IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream("Lenses.xml", FileMode.Open, store))
{
   isoStream.Position = 0;
   XmlReader xmlReader;
   xmlReader = XmlReader.Create(isoStream);
   xmlReader.MoveToContent();
   while (xmlReader.Read())
   {
      switch (xmlReader.NodeType)
      {
         case XmlNodeType.Element:
         {
            if (xmlReader.Name == "date")
            {
               // Code here
            }
         }
      }
   }
}

それは機能しますが、可能であれば、xml ソリューションよりも linq を好みます。

ご協力いただきありがとうございます !

4

1 に答える 1

1

ロードする完全な XML ドキュメントがあるので、次を試してください。

XDocument.Load(isoStream)

それ以外の:

XElement.Load(isoStream)

示唆されているように、小文字のElements("lense")withも必要です。lense

ファイルに実際に次のものが含まれている場合は、次の点に注意してください。

<?xml version="1.0" encoding="utf-8"?>
<lense>
   <days>14</days>
   <date>5/29/2012</date>
   <useToday>True</useToday>
   <dateUseToday />
</lense>
<lense>
   <days>14</days>
   <date>5/29/2012</date>
   <useToday>True</useToday>
   <dateUseToday />
</lense>

複数のルート要素エラーで失敗します。別のエラー、同様の問題。

于 2012-05-15T23:42:31.260 に答える