문제

다음 속성이있는 수업이 있습니다.

public class Author {
  public string FirstName { get; set; }
  public string LastName { get; set; }
}

다음으로, 나는 다음과 같은 저자 목록이 있습니다.

List<Author> authors = new List<Author> ();

authors.add(
  new Author { 
    FirstName = "Steven",
    LastName = "King"
  });

authors.add(
  new Author { 
    FirstName = "Homer",
    LastName = ""
  });

이제 저자 목록을 나타내는 XML을 생성하기 위해 LINQ에서 XML을 사용하려고합니다.

new XElement("Authors",
  new XElement("Author", 
    from na in this.Authors
    select new XElement("First", na.First)))

위의 블록은 예상대로 XML을 생성하지 않습니다. 내가 얻는 것은 :

<Authors>
  <Author>
    <First>Steven</First>
    <First>Homer</First>
  </Author>
<Authors>

내가 XML 출력을 원하는 것은 다음과 같습니다.

<Authors>
  <Author>
    <First>Steven</First>
    <Last>King</Last>
  </Author>
  <Author>
    <First>Homer</First>
    <Last></Last>
  </Author>
</Authors>

XML이 필요하기 때문에 XML을 보는 방법에 대한 도움을 주시면 감사하겠습니다!

도움이 되었습니까?

해결책

당신은 통과해야합니다 IEnumerable<XElement> "저자"문자열이 아닌 두 번째 매개 변수로 쿼리 :

// Note the new way to initialize collections in C# 3.0.
List<Author> authors = new List<Author> ()
{
  new Author { FirstName = "Steven", LastName = "King" }),
  new Author { FirstName = "Homer", LastName = "" })
};

// The XML
XElement xml = new XElement("Authors",
    from na in this.Authors
    select new XElement("Author",
        new XElement("First", na.FirstName),
        new XElement("Last", na.LastName)));

그것은 당신에게 필요한 결과를 줄 것입니다.

다른 팁

나는 당신이 C#을 사용하고 있다는 것을 알고 있지만, 이번에는 솔루션에 VB.NET 프로젝트를 추가하는 것을 진지하게 고려해야합니다. XML 리터럴은 이것에 적합하며 훨씬 쉽게 만듭니다.

저자 목록에서 XML을 얻으려면 다음을 수행합니다.

Function GetAuthorsXML(authors As List(Of Author)) As XElement
    Return <Authors>
               <%= from a in authors _
                   select <Author>
                              <First><%= a.FirstName %></First>
                              <Last><%= a.LastName %></Last>
                          </Author> %>
           </Authors>
End Function
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top