2012-12-19 4 views
1

J'ai essayé mais je n'ai pas réussi? Voici le fichier xmlComment lire les valeurs multidimensionnelles à partir du fichier XML?

<Root> 
    <Data> 
     <Keys>Key1, key2, key3, key4</Keys> 
     <FirstRow>Key1row1, Key2Row1, Key3Row1, Key4Row1</FirstRow> 
     <SecondRow>Key1Row2, Key2Row2, Key3Row2, Key4Row2</SecondRow> 
     <ThirdRow>Key1Row3, Key2Row3, Key2Row3, Key2Row3</ThirdRow> 
     and so on ......... 
    </Data> 
</Root> 

-je utiliser LINQ to XML: -

var data = from d in xDoc.Root.Element("Data") 
           select d; 
    foreach(var d in data) 
    { 
     ... 
    } 

J'aime avoir une cartographie de tableau Md de séparés par des virgules valeur clés avec est séparées par des virgules lignes valeurs.

Key1  key2  key3  key4 
Key1row1 key2Row1 Key3Row1 Key4Row1 
.... 
+0

Est-ce le schéma XML actuel? Quelqu'un a-t-il décidé de donner un nom différent à chaque élément de la ligne? – Groo

Répondre

0

Les éléments de ligne peuvent être itérées (comme cela se fait), mais il va prendre string.Split (ou un analyseur plus avancé) pour décomposer la ligne valeurs elles-mêmes. Dans l'exemple suivant, cela est fait dans la méthode RowTextToValues.

Voici un exemple LINQPad (exécuté comme « programme C# ») avec quelques conseils:

IEnumerable<string> RowTextToValues (string v) { 
    return v.Split(new [] {", "}, StringSplitOptions.None); 
} 

XDocument TestDoc() { 
    return XDocument.Parse(@" 
    <Root> 
     <Data> 
      <Keys>Key1, key2, key3, key4</Keys> 
      <FirstRow>Key1row1, Key2Row1, Key3Row1, Key4Row1</FirstRow> 
      <SecondRow>Key1Row2, Key2Row2, Key3Row2, Key4Row2</SecondRow> 
      <ThirdRow>Key1Row3, Key2Row3, Key2Row3, Key2Row3</ThirdRow> 
     </Data> 
    </Root>"); 
} 

void Main() 
{ 
    var dataNode = TestDoc().Root.Element("Data"); 

    // -> IEnumerable<XElement> 
    var rows = dataNode.Elements(); 

    // -> IEnumerable<IEnumerable<string>> 
    var res = rows 
     .Select(r => RowTextToValues(r.Value)); 

    res.Dump(); 
} 

Conversion à un tableau 2 dimensions ou la manipulation des règles plus complexes est laissée en exercice.

Questions connexes