【发布时间】:2013-11-16 11:11:07
【问题描述】:
我有一个 XML 文件,其组织方式类似于:
<People>
<Person>
<Name>John</Name>
<SurName>Smith</SurName>
</Person>
<Person>
<Name>Jack</Name>
<SurName>Woodman</SurName>
</Person>
[...]
</People>
<Professions>
<Person>
<SurName>Smith</SurName>
<Profession>Blacksmith</Profession>
</Person>
<Person>
<SurName>Woodman</SurName>
<Profession>Lumberjack</Profession>
</Person>
[...]
</Professions>
好的,我们开始吧。 我正在使用 Xml.Linq 解析它,我得到了这样的代码:
foreach (XElement datatype in RepDoc.Element("People").Descendants("Persons"))
{
Name=datatype.Element("Name").Value;
SurName=datatype.Element("SurName").Value;
}
但是,问题是是否可以在另一个方法中打开另一个 foreach,从当前的 datatype 位置开始,而无需重新从头开始解析。
好像该方法继承了 XElement datatype,所以我可以从同一个 <Person>node 开始解析。
这听起来很愚蠢,但我不能放原始的 .xml,因为它很大并且包含数百万的信息,只会让我们更加困惑。
谢谢:)
【问题讨论】:
-
是的,但目的是什么?我假设您想遍历
People标记的后代? -
您可以尝试投射
Descendants()结果ToList()并使用for循环(使用列表的索引)。然后,嵌套的for循环将从index+1开始。希望我能正确理解你的问题。能否提供一些细节? -
我认为要做到这一点,您必须将一个列表传递给“左侧”元素的新方法。不过,这听起来很奇怪。如果您指定在另一个 foreach 中将执行的操作会有所帮助。
-
@DavidS。我用最后一段编辑了这个问题,试图解释将要做什么。 .xml 很大,所以列表是毫无疑问的。但无论如何谢谢:D
标签: c# xml parsing loops foreach