Pergunta

Eu tenho um cenário semelhante como 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, isso é muito simplificado. .... mas ainda não vai funcionar. Algumas ideias sobre o que estou fazendo de errado aqui?

Editar:

Ah, quase esqueci. O problema é que xmlTree.Element("MyObject") retorna uma sequência linq vazio. Mesmo que eu claramente tem um nó chamado "MyObject".

Foi útil?

Solução

O XElement.Parse retorna um XElement que é o nó <MyObject>. Tente: -

var name = xmlTree.Element ( "Propriedades") elemento ( "Nome") Valor;..

Outras dicas

Além do que o cartaz anterior sugeriu, você também pode retornar um XDocument de seu GenerateSomeXml () função para que as suas obras LINQ.

        private static XDocument GenerateSomeXml()
    {
        return XDocument.Parse(@"<MyObject>
                            <Properties>
                               <Name>My object 1</Name>
                               <Position>0; 0; 0</Position>
                            </Properties>
                         </MyObject>");
    }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top