【发布时间】:2020-10-13 22:00:59
【问题描述】:
我的 XML 文件:
<tracking>
<tracking>
<course id="1" name="AGL" nbrecredits="3">
<instructor id="1" name="youssef">
<session date="10-10-2012" numberOfsessions="1"/>
<session date="9-10-2012" numberOfsessions="2"/>
<session date="8-10-2012" numberOfsessions="1"/>
<session date="7-10-2012" numberOfsessions="1.5"/>
</instructor>
<instructor id="2" name="Maroun"/>
<session date="10-10-2012" numberOfsessions="4"/>
<session date="9-10-2012" numberOfsessions="1"/>
</course>
<course id="2" name="projet de programmationa avancee" nbrecredits="3">
<instructor id="1" name="youssef">
<session date="10-10-2012" numberOfsessions="1"/>
<session date="9-10-2012" numberOfsessions="2"/>
<session date="8-10-2012" numberOfsessions="1"/>
<session date="7-10-2012" numberOfsessions="1.5"/>
</instructor>
</course>
<course id="2" name="poo" nbrecredits="3">
<instructor id="2" name="Maroun">
<session date="10-10-2012" numberOfsessions="1"/>
<session date="9-10-2012" numberOfsessions="3"/>
<session date="8-10-2012" numberOfsessions="1"/>
<session date="7-10-2012" numberOfsessions="1.5"/>
</instructor>
<instructor id="1" name="youssef">
<session date="10-10-2012" numberOfsessions="1"/>
<session date="9-10-2012" numberOfsessions="2"/>
<session date="8-10-2012" numberOfsessions="1"/>
<session date="7-10-2012" numberOfsessions="2.5"/>
</instructor>
<instructor id="2" name="Samir"></instructor>
</course>
</tracking>
</tracking>
根据这个 XML,我想计算每门课程和每位讲师的剩余课程(考虑到每门课程有 15 个课程)。
因此,首先我想获取第一门课程(AGL)中每位讲师的课程数量。我的问题是我只能获得其numberOfsessions 等于1 的第一个会话。
使用这个 c# 代码:
var xDoc = XDocument.Load(@"C:\Users\Gaby\Desktop\a.xml");
var homePhone = from phoneno in xDoc.Root.Element("tracking").Elements("course")
where phoneno.Attribute("name").Value.Equals("AGL")
select phoneno;
foreach (XElement xEle in homePhone)
{
Console.WriteLine(xEle.Element("instructor").Element("session").Attribute("numberOfsessions").Value);
}
我尝试获取每门课程的讲师姓名(例如“AGL”应该让我得到“Youssef”和“Maroun”,但它只让我得到“Youssef”(第一个 xml 元素)。
我什至尝试将var homePhone 替换为IEnumerable<string> homePhone,但在将其解析为列表时得到了一个空指针。
我还有另一个问题,我想使用 Linq 和 c# 在我的 xml 文件中为每个讲师插入新的会话,那么有什么方法可以编辑现有的 XElement 还是应该每次都创建一个新的 XElement?
感谢您的宝贵时间。
【问题讨论】:
标签: c# xml linq linq-to-xml