1

假设我在下面有以下 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>
4

1 回答 1

0

你的意思不是很清楚......假设你有(比如说)一个Environment类型,其构造函数接受 aList<string>作为名称,你会使用:

// If element is the <environment> element
Environment = new Environment(element.Elements("name")
                                     .Select(x => x.Value)
                                     .ToList());
于 2012-11-15T22:07:47.020 回答