c#,如何读取XML内部元素
本文关键字:XML 内部 元素 读取 何读取 | 更新日期: 2023-09-27 18:06:29
我有一个xml文件,其中列出了我需要读取以生成string[]
的一堆文件。我可以识别xml文件中的每个ProjectGroup:
XmlNodeList projectsGroup = doc.SelectNodes("//ProjectGroups/ProjectGroup");
if (projectsGroup != null)
{
foreach (XmlNode projectNode in projectsGroup)
{
//Need to read inside the ProjectGroup, how?
}
}
使用这段代码,我可以创建每个ProjectGroup的列表。我如何在每个项目中读取文件列表?下面是我正在使用的xml文件:
<ProjectGroups>
<ProjectGroup Name = "InvGroup">
<Out>
<Project Name="Inv.Commands" In="false" LC="false">
<File>Inv.Commands.dll</File>
<File>Inv.Commands.pdb</File>
<File>Inv.Commands.xml</File>
</Project>
<Project Name="Inv.Common" In="false" LC="false">
<File>Inv.Common.dll</File>
<File>Inv.Common.pdb</File>
<File>Inv.Common.xml</File>
</Project>
</Out>
</ProjectGroup>
<ProjectGroup Name = "RATGroup">
<Out>
<Project Name="DB_RAT" In="false" LC="false" IF="" />
<Project Name="AnalyzeData" In="false" LC="true" IF="">
<File>AnalyzeData.dll</File>
<File>AnalyzeData.pdb</File>
<File>AnalyzeData.xml</File>
</Project>
<Project Name="Commands.GetCh" In="false" LC="true" IF="">
<File>Commands.GetCh.dll</File>
<File>Commands.GetCh.pdb</File>
<File>Commands.GetCh.xml</File>
</Project>
</Out>
</ProjectGroup>
</ProjectGroups>
一旦你有了项目组的列表,你可以进一步选择-不是基于代表整个XML文档的doc
变量-而是基于代表单个项目的projectNode
:
foreach (XmlNode projectNode in projectsGroup)
{
//Need to read inside the ProjectGroup, how?
XmlNodeList files = projectNode.SelectNodes("//File");
foreach(XmlNode fileNode in files)
{
// do whatever you need to do to the "file" node here....
}
}
projectNode.SelectNodes('.//File')
为您提供单个项目节点以下的所有<File>
- node。只需遍历列表并创建数组
可以这样做:
XmlDocument doc = new XmlDocument();
doc.Load(xmlfilepath);
XmlNodeList nodes = doc["ProjectGroups"]["ProjectGroup"]["Out"]["Project"].ChildNodes;
foreach(XmlNode node in nodes ) {
//do something
}
编辑
如果文件非常大,我强烈建议使用XPathNavigator,因为XmlDocument将文件加载到内存中,所以对于大文件使用它不方便。