XDocument Потомки Потомков - PullRequest
2 голосов
/ 01 марта 2011
<Tickets>
<Extract_Date>2011-02-25 00:00:00</Extract_Date>
<Incidents>
  <Ticket xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Ticket_Number>INC000000578057</Ticket_Number>
    <Status>
      <Value>Cancelled</Value>
    <Reason>Cancelled by user</Reason>
  </Status>
</Ticket>

Я могу получить номер билета в порядке с:

var q1 = from c in xmlDoc.Descendants("Ticket")
                   select new
                   {
                       Ticket_Number = (string)c.Element("Ticket_Number"),
                   };

Как получить причину?

Ответы [ 2 ]

3 голосов
/ 01 марта 2011

Это должно работать:

var q1 = from c in xmlDoc.Descendants("Ticket")
    select new
    {
        Ticket_Number = (string)c.Element("Ticket_Number"),
        Reason = (string)c.Element("Status").Element("Reason")
    };
2 голосов
/ 01 марта 2011
//if you have exactly one <Ticket> with exactly one <Reason>
string strReason = xmlDoc.Descendants("Ticket").Single()
    .Descendants("Reason").Single().Value;

//if you have one or multiple <Ticket> elements, 
//each with exactly one <Reason> element
string[] astrReasons = xmlDoc.Descendants("Ticket")
    .Select(ticket => ticket.Descendants("Reason").Single().Value).ToArray();

//if you have one or multiple <Ticket> elements, 
//each with one or multiple <Reason> elements
string[] astrReasons2 = xmlDoc.Descendants("Ticket")
    .SelectMany(ticket => ticket.Descendants("Reason")
    .Select(reason => reason.Value)).ToArray();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...