🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

852閲覧

XMLの取得について

Qoo

総合スコア1249

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2019/09/29 02:28

下記のようなXMLで出発時間(DepartureTime)と到着時間(ArrivalTime)を取得したいのですが
foreachを使って階層以下を取得しようとしたところ下記のエラーが発生しコンパイルが通りません。
var で取得したデータ型はXElementになっているようなので意味がわからないのですが、
どのように回避すればよいでしょうか?

Error

1foreachステートメントはXElementがGetEnumeratorの 2パブリックインスタンスを含んでいないため、型XElementに対して使用できません

XML

1<?xml version="1.0" encoding="utf-8"?> 2<Config> 3 <id>guest</id> 4 <Item No="1" Name="テスト"> 5 <speed>0.2</speed> 6 <Departure> 7 <DepartureTime>13:00</DepartureTime> 8 </Departure> 9 <Arrival> 10 <ArrivalTime>17:00</ArrivalTime> 11 </Arrival> 12 </Item> 13</Config>

c#

1 2// XML読み込み 3XDocument xml=XDocument.Load(Application.streamingAssetsPath + "/worldconf.xml"); 4XElement root=xml.Element("Config"); 5 6Debug.Log(root.Elements("id").ToString()); //OK guest 7 8var rows=root.Elements("Item"); 9 10foreach (XElement row in rows) { 11 12 Debug.Log(row.Element("speed")); //OK 0.2 13 Debug.Log(row.Element("Departure").Element("DepartureTime")); //OK 13:00 14 15 var departures=row.Element("Departure"); 16 Debug.Log(departures.GetType()); //← System.Xml.Linq.XElementになっている 17 18 foreach (XElement departure in departures) //← コンパイルが通りません。 19 { 20 } 21 22} 23

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Element は単一の要素を返します。単一なので foreach で回すことはできません。

これを Elements に変えてください。

投稿2019/09/29 02:54

Zuishin

総合スコア28669

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2019/09/29 02:57

Departure が一つしかないとわかっているなら Element で構いませんが、その場合は foreach は使えません。 > Debug.Log(row.Element("Departure").Element("DepartureTime")); //OK 13:00
Qoo

2019/09/29 03:00

ありがとうございます! 大変良くわかりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問