Pregunta

Tengo un escenario similar a este:

public class TestLinq2Xml
{
  private XElement GenerateSomeXml()
  {
     return XElement.Parse(@"<MyObject>
                                <Properties>
                                   <Name>My object 1</Name>
                                   <Position>0; 0; 0</Position>
                                </Properties>
                             </MyObject>");
  }

public void ExploreXmlNode()
{
  var xmlTree = this.GenerateSomeXml();

  var name = xmlTree.Element("MyObject").Element("Properties").Element("Name").Value;

  Console.WriteLine(name);
}

}

Ok, esto está muy simplificado. .... pero todavía no funcionará. ¿Alguna idea de lo que estoy haciendo mal aquí?

Editar:

Oh, casi lo olvido. El problema es que xmlTree.Element("MyObject") devuelve una secuencia de linq vacía. Aunque claramente tengo un nodo llamado & Quot; MyObject & Quot ;.

¿Fue útil?

Solución

El XElement.Parse devuelve un XElement que es el nodo <MyObject>. Prueba: -

var name = xmlTree.Element (" Propiedades "). Elemento (" Nombre "). Valor;

Otros consejos

Además de lo que sugirió el póster anterior, también puede devolver un XDocument desde su función GenerateSomeXml () para que su linq funcione.

        private static XDocument GenerateSomeXml()
    {
        return XDocument.Parse(@"<MyObject>
                            <Properties>
                               <Name>My object 1</Name>
                               <Position>0; 0; 0</Position>
                            </Properties>
                         </MyObject>");
    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top