(provisional)

データサイエンティストになるためのあれこれ

【C#】System.InvalidOperationException: XmlReader は、型 None のノードではなく型 Element のノード上に存在する必要があります。

Visual C# 2017で

  • 1. 起動したらJSONファイルを読み込む
  • 2. ボタンを押すと処理Aが実行される
  • 3. 他のコレクションで値を変える
  • 4. 再度ボタンを押して処理Aを実行させる

ということがしたいのですが、4. の際に以下エラーが出ました。

System.InvalidOperationException: XmlReader は、型 None のノードではなく型 Element のノード上に存在する必要があります。

で、エラーのあった個所を見てみると

ファイル名:Dynamicjson.cs

該当コード:

        public static dynamic Parse(string json, Encoding encoding)
        {
            using (var reader = JsonReaderWriterFactory.CreateJsonReader(encoding.GetBytes(json), XmlDictionaryReaderQuotas.Max))
            {
                return ToValue(XElement.Load(reader));
            }
        }

でした。


自分が書いたコードをよく見てみると、
JSONファイルを開くためのコードを「画面を起動したとき」に処理されるようになってました。
「ボタンを押したとき」に開いてなかったんですね。
そりゃ怒られるわ(笑)

ということで、JSONファイルを開くコードを、
ボタンを押すイベントハンドラー内に移動して解決!