xml使用linq解析

问题描述:

我有一个组合框,当用户选择它们时,xml被解析。xml使用linq解析

如果我选择item1,我需要选择此“C:\ folder1”作为路径。 第2项: “C:\文件夹2” 第3项: “C:\ folder3”

我的XML文件:

<?xml version="1.0"?> 
<main> 
    <target>C:\folder1</target> 
    <target>C:\folder2</target> 
    <target>C:\folder3</target> 
</main> 

我使用的XDocument做解析:

 private void pathselection() 
    { 
     XDocument pathdoc = XDocument.Load(@"C:\GUI\path.xml"); 
     var abc = from target in pathdoc.Descendants("target") 
        ... 
        ... 

    } 

现在我被困在这里。我应该包括如果语句内pathselection()?我如何解析路径?

EDIT1:

顺便说一句,我想用来存储这些路径字符串

string selectedpath1 = ""; 

鉴于在ComboBox比赛的可选项目在XML中的项目,你可以得到由target元素index:

private void pathselection() 
{ 
    XDocument pathdoc = XDocument.Load(@"C:\GUI\path.xml"); 
    var abc = pathdoc.Descendants("target") 
        .Where((e, i) => i == MyComboBox.SelectedIndex) 
        .Single();   
} 

你可能想要处理的事情,如索引不匹配,你可能想要使用SingleOrDefaultFirstOrDefault来处理。

+0

嗨嗨,你是什么意思,当在combobox中选定的项目匹配的项目在XML?意味着我必须将选定的项目添加为标签而不是“目标”?这意味着,我的XML:'

C:\文件夹1 C:\文件夹2 C:\ folder3
' – jeremychan 2011-04-08 09:03:32

+0

我的意思是,除非你使用XML数据绑定'ComboBox',你必须确保您具有相同数量的项目,以便您可以将选择与数据匹配。 ComboBox中需要三个项目。当你选择第一个时,它将有索引0,它将使用我样本中的代码选择你的第一个''元素。但是,我认为使用xml数据绑定'ComboBox'可能会更好,如果您希望不同于可见文本,可以为数据添加一些属性。另一方面,我可能误解了你的问题? – 2011-04-08 10:25:33