重複の可能性:
LINQを使用してXMLからすべてのノードを読み取ります
C#WindowsアプリケーションでLinqを使用してXMLファイルを読み取ろうとしています。xml文字列のサンプルを以下に示します。
<Root>
<Name>John Doe</Name>
<Data>FBCCF14D504B7B2DBCB5A5BDA75BD93B</Data>
<customer>true</customer>
<Accounts>1</Accounts>
<dataSet>
<Type1>Found matching records.</Type1>
<Type2>No matches found.</Type2>
<Type3>Found matching records.</Type3>
</dataSet>
</Root>
<dataset>
タグ内のすべてのデータを表示したいのですが、タグも<datatag>
読みたいです<customer>
。
メンバー(文字列型、文字列ステータス)を持つクラスを作成しました。タイプのどこにタイプ1、2 ...を保存し、ステータスのどこにタイプノード内にあるものを保存したいのか。
私はこれを達成することができますが、コードで私は与えなければなりません
type1 = (string)row.Element("type1"),
type2=(string)row.Element("type2"),
すべてのタイプについて言及する必要がない一般的なコードが欲しいです。言い換えれば、タグ名に言及せずに、タグのすべての子ノードを読み取りたいのです。私はグーグルでこれを検索するのに2時間を費やしましたが、まだ何も見つかりませんでした。
期待される出力
情報をクラスオブジェクト(タイプとステータス)に保存します。
そして、その人がすでに顧客であるかどうかを知ることができるように、顧客タグを読みたいです
どんな助けでも大歓迎です。
ありがとう
アップデート
RaphaëlAlthausから受け取った入力によると
私は次のコードを持っています:
var list = xml.Descendants("dataSet").Elements()
.Select(m => new CustomerInfo
{
Type = m.Name.LocalName,
Value = m.Value
}).ToList();
foreach (CustomerInfo item in list)
{
MessageBox.Show(item.Type+ " "+item.Value);
}
そして、Customerタグを読むために、私はより多くのコードを書きました。
var isCustomer = from customer in xmlDoc.Descendants("Root")
select new
{
customer = tutorial.Element("customer").Value,
}
1つのクエリで両方を実行できますか?または、この方法はパフォーマンスにそれほど重くはないので、これを使用できますか?