假设我在下面有以下 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();
它工作正常,但是当我再添加一个类元素时,它会中断:
<student name="A" class="1">
<classes>
Math
</classes>
<classes>
Java
</classes>
</student>
<student name="B" class="2">
<classes>
Programming
</classes>
</student>