2010-04-02 9 views
1

Je suis nouveau sur xml et incapable de trouver un moyen d'obtenir du contenu entre les balises. Mon fichier XML estLire un fichier XML avec .NET

<?xml version="1.0" encoding="utf-8"?> 
<block1> 
    <file name="c:\w0.xml"> 
    <word>Text</word> 
    <number>67</number> 
    </file> 
    <file name="c:\w1.xml"> 
    <word>Text</word> 
    <number>67</number> 
    </file> 
    <file name="c:\w2.xml"> 
    <word>Text</word> 
    <number>67</number> 
    </file> 
</block1> 
+1

S'il vous plaît montrer ce que vous avez essayé. –

Répondre

1

Vous devez utiliser un langage XML Query. Je recommanderais LINQ to XML si vous utilisez .Net 3.5 ou XPath si vous utilisez quelque chose plus tôt. XPath a l'avantage d'être un standard de l'industrie, mais LINQ to XML est une API beaucoup plus «propre», à mon avis.

How to query XML with an XPath expression by using Visual C# - Tutoriel sur l'utilisation de XPath

LINQ to XML Video Tutorial

MSDN XPath Examples - De la XPath

Location Paths - Comprend texte() fonction par exemple.

5

LINQ to XML est un excellent point de départ. Considérez le code suivant pour analyser votre XML.

string xml = @"<?xml version=""1.0"" encoding=""utf-8""?> 
<block1> 
    <file name=""c:\w0.xml""> 
    <word>Text</word> 
    <number>67</number> 
    </file> 
    <file name=""c:\w1.xml""> 
    <word>Text</word> 
    <number>67</number> 
    </file> 
    <file name=""c:\w2.xml""> 
    <word>Text</word> 
    <number>67</number> 
    </file> 
</block1>"; 

XDocument document = XDocument.Parse(xml); 

var block = from file in document.Descendants("file") 
      select new 
      { 
       Name = file.Attribute ("name").Value, 
       Word = file.Element("word").Value, 
       Number = (int)file.Element("number") 
      }; 

foreach (var file in block) 
{ 
    Console.WriteLine("{0}\t{1}\t{2}", file.Name, file.Word, file.Number); 
} 

Vous pouvez, bien sûr, charger directement le XML à partir d'un fichier à l'aide XDocument.Load au lieu d'utiliser Parse pour lire une chaîne XML. XDocument se trouve dans l'espace de noms System.Xml.Linq. Franchement, je voudrais commencer là, mais il existe d'autres options pour travailler avec XML dans l'espace de noms System.Xml (XmlReader.Create, etc.).

+1

@Anthony: pas 'XmlTextReader'. 'XmlReader.Create'. –

+0

Merci, John. Va montrer ce que je sais. J'ai oublié (presque) tout sur les autres méthodes depuis que LINQ est arrivé! Très tragique. –

Questions connexes