如何循环遍历XML文件中的节点
本文关键字:文件 XML 节点 遍历 何循环 循环 | 更新日期: 2023-09-27 17:53:21
我有一个XML文件,其结构大致如下:
<ScenarioList>
<Scenario>
... various things
</Scenario>
</ScenarioList>
这将被读入WPF对话框。每次用户选择"Next"时,我都要将下一个场景数据读取到各个字段中。显然,用户点击"最后"按钮也是如此。
但问题是:我如何从所选的场景节点读取信息?
让我试着澄清这个问题,因为它似乎"过于宽泛":
我熟悉加载和读取整个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");
你可以从这里查看更多细节