以下のXMLファイルがあるとしましょう。私の質問は、LINQを使用してクエリを実行するときに、異なる数の名前要素(環境要素の子)をどのように考慮するかです。同じ数の名前要素がある場合(たとえば、すべて3つある場合)、ファイルを読み取ったり、クエリを実行したりすることもできます。私の目標は、リストで校正された環境を持つオブジェクトにXMLファイルの名前を入力することです。どんな助けでもいただければ幸いです。
<database type="prod">
<name>DB1</name>
<server>
<name>prodserver.net</name>
</server>
<connection>
<name>u1</name>
<password>b1</password>
</connection>
<environment>
<name>test1</name>
<name>test2</name>
<name>test3</name>
</environment>
</database>
<database type="dev">
<name>DB2</name>
<server>
<name>devserver.net</name>
</server>
<connection>
<name>u11</name>
<password>b11</password>
</connection>
<environment>
<name>test1</name>
<name>test2</name>
<name>test3</name>
<name>test4</name>
<name>test5</name>
</environment>
</database>
または、もっと簡単にするために、次のようなものがあるとしましょう
<student name="A" class="1">
<classes>
Math
</classes>
</student>
<student name="B" class="2">
<classes>
Programming
</classes>
</student>
そして、私は次のコードを実行します:
var students = doc.Root
.Elements("student")
.Select(x => new Student
{
Name = (string)x.Attribute("name"),
Class = (string)x.Attribute("class"),
Type = (string)x.Elements("classes").Single().Value
})
.ToList();
正常に動作しますが、classes要素をもう1つ追加すると、次のように機能しなくなります。
<student name="A" class="1">
<classes>
Math
</classes>
<classes>
Java
</classes>
</student>
<student name="B" class="2">
<classes>
Programming
</classes>
</student>