Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何循环遍历XML文件中的节点_C#_Xml_Wpf - Fatal编程技术网

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

C# 如何循环遍历XML文件中的节点,c#,xml,wpf,C#,Xml,Wpf,我有一个XML文件,其结构大致如下: <ScenarioList> <Scenario> ... various things </Scenario> </ScenarioList> XmlDocument xml = new XmlDocument(); xml.LoadXml("your xml"); XmlNodeList list = xml.SelectNodes("/ScenarioList/Sce

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

<ScenarioList>
    <Scenario>
        ... various things
    </Scenario>
</ScenarioList>
XmlDocument xml = new XmlDocument();
xml.LoadXml("your xml"); 

XmlNodeList list = xml.SelectNodes("/ScenarioList/Scenario");
foreach (XmlNode xn in list)...
这将被读入WPF对话框。每次用户选择“下一步”时,我都希望将下一个场景数据读入各个字段。显然,用户点击“最后一个”按钮也是一样的

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

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

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


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

首先需要将XML加载到XmlDocument中,然后可以选择特定的节点并对其进行迭代,如下所示:

<ScenarioList>
    <Scenario>
        ... various things
    </Scenario>
</ScenarioList>
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");

您可以从

中了解更多详细信息您是否熟悉XPath之类的东西,或者您是否想过在C上执行简单的google搜索如何从XML文件中读取/检索值现在开始。。也许这对你有帮助这太宽泛了,真的。看一下LINQtoXML,当您有一个特定的问题时再回来。我想问的是,如何在没有索引的情况下读取节点的特定实例?如果这是一个数组,我想阅读场景[3]。我怎样才能只阅读场景列表/场景的第三个实例?是的!这几乎是我一字不差地写的。但是,我如何阅读所需的/场景列表/场景?比方说,我想阅读这个/ScenarioList/场景的第三个实例。如何读取此实例?传入索引列表[2]