![](/img/trans.png)
[英]How to get XML nodes InnerText without concatenation and using Xml.Linq in C#?
[英]Help reading recursive XML using XML.LINQ (C#)
我剛開始使用LINQ,但在理解如何從XML文件遞歸讀取時遇到了兩個問題
如果我有類似的XML
> <ProjectTemplates>
> <ProjectTemplate Name="Standard">
> <DeliverableTemplates>
> <DeliverableTemplate Name="Each Deliverable">
> <DependantDeliverables>
> <DeliverableTemplate Name="Can Have a Collection">
> <DependantDeliverables>
> <DeliverableTemplate Name="of dependant deliverables">
> <DependantDeliverables>
> <DeliverableTemplate Name="recursively">
> <DependantDeliverables />
> </DeliverableTemplate>
> </DependantDeliverables>
> </DeliverableTemplate>
> </DependantDeliverables>
> </DeliverableTemplate>
> </DependantDeliverables>
> </DeliverableTemplate>
> </DependantDeliverables>
> </DeliverableTemplate>
> </DependantDeliverables>
> </DeliverableTemplate>
> </ProjectTemplates>
我正在嘗試將其讀入幾個非常簡單的類中
internal class Project
{
public string Name;
public List<Deliverable> Deliverables;
}
internal class Deliverable
{
public string Name;
public List<Deliverable> DependantDeliverables;
public Deliverable()
{
DependantDeliverables = new List<Deliverable>();
}
}
但是我真的不確定如何去做。 據我所知
var xmlProjects = XElement.Load(XMLPath);
var projecttemplates =
(
from el in xmlProjects.Elements("ProjectTemplates").Elements("ProjectTemplate")
select new Project
{
Name = el.Attribute("Name").Value,
Deliverables =
(
from elDeliverables in el.Elements("DeliverableTemplates").Elements("DeliverableTemplate")
select new Deliverable
{
Name = elDeliverables.Attribute("Name").Value,
DependantDeliverables = new List<Deliverable>()
}
).ToList<Deliverable>()
}
).ToList<Project>();
我在構建DependantDeliverables列表時遇到問題。 我什至不確定我是否可以像這樣的單一聲明來做到這一點。
有人可以幫忙嗎?
傑森
我將更改Deliverable
類,以便其構造函數采用對應於給定<DeliverableTemplate>
的XElement
。 然后,該構造函數將負責遍歷XElement,查找子代,填充List <>,並調用其他構造函數,進一步傳入更多XElement,直到到達並解析所有節點為止。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.