我有一个XML文件,其结构大致如下:
<ScenarioList>
<Scenario>
... various things
</Scenario>
</ScenarioList>
这正在读入WPF对话框。每次用户选择“下一步”时,我都希望将下一个场景数据读入各个字段。显然,用户同样点击“上一步”按钮也是如此。
但问题是:我如何阅读所选Scenario节点的信息?
让我试着澄清这个问题,因为它似乎“过于宽泛”:
我熟悉加载和读取整个XML文件。我只想有选择地读取特定节点。例如:如何只读取第一个Scenario节点的数据?然后,根据用户输入,只读取第二个Scenario节点的数据?然后,根据用户输入,只读取第一个场景节点的数据?或者只是第三个场景节点?
本质上,我问,因为XML没有'索引'如何指定要读取的节点的哪个实例?
答案 0 :(得分:2)
首先,您需要将xml加载到XmlDocument中,然后您可以选择特定节点并迭代它们,如下所示:
XmlDocument xml = new XmlDocument();
xml.LoadXml("your xml");
XmlNodeList list = xml.SelectNodes("/ScenarioList/Scenario");
foreach (XmlNode xn in list)...
答案 1 :(得分:2)
您可以使用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");
您可以参考here
详细介绍