2011-04-18 6 views
0

mon combobox est peuplé deobtenir un chemin dans le fichier xml

6.70_Extensions

7.00_Extensions

7.10.000_Tip

7.10_Extensions

si ma combobox valeur sélectionnée est 6.70_Extensions et pendant un événement de bouton, comment puis-je sélectionner un chemin à partir d'un fichier xml (antcheckin.xml) avec "6.70_Extensions"? par exemple: en sélectionnant "C:\Work\6.70_Extensions\folder" à partir d'un fichier xml.

Note: La valeur sélectionnée est combobox

var buildStream =((DataRowView)BuildstreamComboBox.SelectedItem).Row["value"].ToString()

Fondamentalement, après avoir sélectionné ce chemin, je vais faire de ce dossier non en lecture seule.

Donc, c'est ce que j'ai fait précédemment (note: cette zone de liste déroulante n'a pas été remplie avec des données xml et j'ai réussi à le remplir avec des données XML et donc j'ai besoin d'un nouveau code index maintenant).

// the following is used to ensure the folder checked out is now not "read only" 


if (BuildstreamComboBox.SelectedIndex == 0) 
     { 
      var di = new DirectoryInfo("C:\\Work\\6.70_Extensions\\folder"); 
      foreach (var file in di.GetFiles("*", SearchOption.AllDirectories)) 
       file.Attributes &= ~FileAttributes.ReadOnly; 
     } 
     if (BuildstreamComboBox.SelectedIndex == 1) 
     { 
      var di = new DirectoryInfo("C:\\Work\\7.00_Extensions\\folder"); 
      foreach (var file in di.GetFiles("*", SearchOption.AllDirectories)) 
       file.Attributes &= ~FileAttributes.ReadOnly; 
     } 
     if (BuildstreamComboBox.SelectedIndex == 2) 
     { 
      var di = new DirectoryInfo("C:\\Work\\7.10.000_Tip\\folder"); 
      foreach (var file in di.GetFiles("*", SearchOption.AllDirectories)) 
       file.Attributes &= ~FileAttributes.ReadOnly; 
     } 

antcheckin.xml:

<project> 
    <buildmachine4> 
      <checkout1 exe="wco" folder='-f -R "C:/Work/6.70_Extensions/folder/"'/> 
      <checkout2 exe="wco" folder='-f -R "C:/Work/7.00_Extensions/folder/"'/> 
     </buildmachine4> 
     <buildmachine5> 

     <checkout3 exe="wco" folder='-f -R "C:/Work/7.10.000_Tip/folder/"'/> 
    </buildmachine5> 

</project> 

EDIT 1: Salut les gars, je vais faire une recherche dans mon fichier antcheckin.xml mais je suis un peu coincé pour obtenir analyser l'attribut out :

public void BuildButton_Click(object sender, RoutedEventArgs e) 
{ 
    // the following is used to ensure the folder checked out is now not "read only" 

    // load your XML 
    XDocument doc = XDocument.Load(@"C:\Work\ANTCheckIN.xml"); 


    XElement mainItem = doc.Descendants("project") 
        .Where(mi => mi.Attribute("folder").Value.Contains(buildStream) 

    .... 
    //what should be added here? 
} 

Répondre

0

Faire usage de LINQ to XML et ne la recherche d'attribut xml Valut en vous

quelque chose comme ci-dessous

from el in root.Elements("rootlement") 
where 
(from add in el.Descendants() 
where 
add.Attribute("MyAttribute") != null 
&& 
add.Attribute("MyAttribute").Value.Contains("ZXCV") 
select add) 
.Any() 
select el; 
+0

mais comment puis-je obtenir le juste ' "C: /Work/6.70_Extensions/folder"'? parce qu'il y a '-f' et' -R' en face de lui – jeremychan

+0

@jeremychan - remplacez -f et -r par la fonction de manipulation de chaîne après l'annulation de la valeur de l'attribut –

+0

@jeremychan Êtes-vous capable d'éditer le fichier XML? Les drapeaux sont-ils nécessaires? Si c'est le cas, je suggérerais que vous ayez séparé les drapeaux '-f' et' -R' de l'attribut folder. Par exemple quelque chose comme ça (j'ai supposé la signification des drapeaux): ' '. – bcpettifer

Questions connexes