Pregunta

Estoy tratando de obtener todos los elementos de "video" y sus atributos de un archivo XML que se ve así:

<?xml version="1.0" encoding="utf-8" ?>
<videos>
  <video title="video1" path="videos\video1.wma"/>
  <video title="video2" path="videos\video2.wma"/>
  <video title="video3" path="videos\video3.wma"/>
</videos>

Lo siguiente solo seleccionará el nodo raíz y todos los niños. Me gustaría llevar todos los elementos de 'video' en el Ienumerable. ¿Alguien puede decirme qué estoy haciendo mal?

 IEnumerable<XElement> elements = from xml in _xdoc.Descendants("videos")
                           select xml;

Lo anterior devuelve una colección con una longitud == 1. Contiene el elemento raíz y todos los niños.

¿Fue útil?

Solución

Desea seleccionar descendientes ("video"). "Videos" parece ser su entrada de raíz, de la cual hay 1 elemento. Los elementos internos de los videos son lo que quieres consultar.

Ejemplo:

var query = from video in document.Descendants("video")
            select new
            {
                Title = video.Attribute("title").Value,
                Path = video.Attribute("path").Value
            };

Eso te da un tipo de tipo anónimo con dos propiedades de cadena. De lo contrario, simplemente podría seleccionar "video" y obtener un IEnumerable<XElement>, que analizarías aún más según sea necesario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top