Нужна небольшая помощь с Linq 2 xml
У меня похожий сценарий, как этот:
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".
2 ответа
Решение
XElement.Parse возвращает XElement, который является <MyObject>
узел. Пытаться:-
var name = xmlTree.Element ("Свойства"). Элемент ("Имя"). Значение;
Помимо того, что предлагал предыдущий плакат, вы также можете вернуть XDocument из вашей функции GenerateSomeXml(), чтобы ваш linq работал.
private static XDocument GenerateSomeXml()
{
return XDocument.Parse(@"<MyObject>
<Properties>
<Name>My object 1</Name>
<Position>0; 0; 0</Position>
</Properties>
</MyObject>");
}