Вопрос

У меня есть сценарий, похожий на этот:

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);
}

}

Хорошо, это очень упрощенно..... но это все равно не сработает.Есть какие-нибудь идеи о том, что я здесь делаю не так?

Редактировать:

О, чуть не забыл.Проблема в том, что xmlTree.Element("MyObject") возвращает пустую последовательность linq.Даже несмотря на то, что у меня явно есть узел с именем "MyObject".

Это было полезно?

Решение

Элемент X.Синтаксический анализ возвращает элемент X, который является <MyObject> узел.Попробуй:-

имя переменной = xmlTree.Элемент ("Свойства").Элемент ("Имя").Значение;

Другие советы

Помимо того, что предлагалось в предыдущем постере, вы также можете вернуть XDocument из вашей функции GenerateSomeXml(), чтобы ваш linq работал.

        private static XDocument GenerateSomeXml()
    {
        return XDocument.Parse(@"<MyObject>
                            <Properties>
                               <Name>My object 1</Name>
                               <Position>0; 0; 0</Position>
                            </Properties>
                         </MyObject>");
    }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top