我有这样的xml:
public static void SendTheLoadedPerson(ObservableCollection<ObservableCollection<Person>> list)
{
XmlDocument xmlDoc = new XmlDocument();
XDocument doc = XDocument.Load(path);
XmlElement root = xmlDoc.DocumentElement;
XmlNodeList nodes = xmlDoc.DocumentElement.ChildNodes;
XmlNodeList nodes2 = root.SelectNodes("//Pepole/PersonList/Person");
foreach (XmlNode node in nodes)
{
var items = (from r in doc.Root.Elements("Person")
select new Person()
{
Name = (string)r.Element("Name"),
Surname = (string)r.Element("Surname"),
City = (string)r.Element("City")
}).ToList();
list.Add(new ObservableCollection<Person>(items));
}
}
方法:
{{1}}
现在我遇到了一个问题,因为XmlNode返回正常 - 3 Personlist和Person内部,但我想将count of nodes asigne分别指向ObservableCollection&gt;名单。 我的意思是:当PersonList包含2个人时,我想向列表发送2个人,作为一个计数,很难向我解释所以它应该是这样的: template
我将非常感谢任何提示/帮助!
答案 0 :(得分:0)
这是您第四次发布相同的问题。最新发布的xml略有不同。以下是使用最新xml并添加计数的其中一个帖子中提供的解决方案。使用Elements而不是Descendants,您的解决方案会更复杂。 :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
XDocument doc = XDocument.Load(FILENAME);
var results = doc.Descendants("PersonList").Select(x => new {
count = x.Elements("Person").Count(),
people = x.Elements("Person").Select(y => new {
name = (string)y.Element("Name"),
surname = (string)y.Element("Surname"),
city = (string)y.Element("City")
}).ToList()
}).ToList();
}
}
}