如何循环遍历XML文件中的节点

本文关键字:文件 XML 节点 遍历 何循环 循环 | 更新日期: 2023-09-27 17:53:21

我有一个XML文件,其结构大致如下:

<ScenarioList>
    <Scenario>
        ... various things
    </Scenario>
</ScenarioList>

这将被读入WPF对话框。每次用户选择"Next"时,我都要将下一个场景数据读取到各个字段中。显然,用户点击"最后"按钮也是如此。

但问题是:我如何从所选的场景节点读取信息?

让我试着澄清这个问题,因为它似乎"过于宽泛":

我熟悉加载和读取整个XML文件。我只是想选择性地读取特定的节点。例如:我如何读取第一个场景节点的数据?然后,根据用户输入,只读取第二个场景节点的数据?然后,根据用户输入,只读取第一个场景节点的数据?或者只是第三个场景节点?

本质上,我在问,既然XML没有"索引",我如何指定要读取的节点的哪个实例?

如何循环遍历XML文件中的节点

首先需要将xml加载到XmlDocument中,然后选择特定节点并遍历它们,如下所示:

XmlDocument xml = new XmlDocument();
xml.LoadXml("your xml"); 
XmlNodeList list = xml.SelectNodes("/ScenarioList/Scenario");
foreach (XmlNode xn in list)...

可以使用JXPath遍历节点。如果您需要计算相对于对象图中的某个节点的多条路径,您可能需要创建一个相对的JXPathContext。

首先,获取应该是相对上下文根的位置的指针。然后通过调用

获取相关上下文。
 JXPathContext context = JXPathContext.newContext(bean);
 Pointer addressPtr = context.getPointer("/employees[1]/addresses[2]");
 JXPathContext relativeContext = 
              context.getRelativeContext(addressPtr);
 // Evaluate relative path 
 String zipCode = (String)relativeContext.getValue("zipCode");
 // Evaluate absolute path
 String name = (String)relativeContext.getValue("/employees[1]/name");
 // Use the parent axis to locate the employee for the current address
 Double salary = (Double)relativeContext.getValue("../salary");

你可以从这里查看更多细节