2010-11-21 5 views
0

Ich habe ein Programm, wo ich XML-Code aus meiner Datenbank SQL 2005 abrufen, jetzt möchte ich alle Attribute zusammen mit ihren Werten in Windows-Formular-Anwendung anzuzeigen. Gibt es irgendeine Funktion, die das unterstützt? und wie?bekommen Attribute und Werte von XML mit C#

<Permission> 
    <CP name="Student"> 
     <tab name="studentinfo"> 
     </tab> 
     <tab name="notes"> 
      <groupbox name="ss"> 
      <field type="textArea" x="xxx" /> 
      </groupbox> 
     </tab> 
    </CP> 
    <CP name="Teacher"> 
    </CP> 
    <CP name="doctor"> 
    </CP> 
</Permission> 

Ausgang: name = "Student" name = "Student info"

und so weiter ..

+0

Haben Sie ein Beispielschema? – Iain

+0

aktualisiert ......... – salman

+0

XML-Code ist nicht hier, aber Sie können eine Idee bekommen – salman

Antwort

1

Sie können dies als Gebrüll zu Linq von XML tun:

 XDocument xmlDoc = XDocument.Load("a.xml"); 
     var nodeAttrs = xmlDoc.Descendants().Select(x => x.Attributes()); 
     foreach (var attrs in nodeAttrs) 
     { 
      foreach (var attr in attrs) 
       Console.WriteLine("Name: {0}, Value :{1}", attr.Name ,attr.Value); 
     } 

Ausgabe ist wie unten für Ihre XML:

Name: name, Value :Student 
Name: name, Value :studentinfo 
Name: name, Value :notes 
Name: name, Value :ss 
Name: type, Value :textArea 
Name: x, Value :xxx 
Name: name, Value :Teacher 
Name: name, Value :doctor 

Edit: Und wenn Sie eine Zeichenfolge haben, die Ihre XML steht, können Sie

var xmlString = "<Permission> <CP name=\"Student\"> <tab name=\"studentinfo\"></tab><tab name=\"notes\"><groupbox name=\"ss\"><field type=\"textArea\" x=\"xxx\" /></groupbox></tab></CP><CP name=\"Teacher\"></CP><CP name=\"doctor\"></CP></Permission>"; 
    byte[] byteArray = Encoding.ASCII.GetBytes(xmlString); 
    MemoryStream stream = new MemoryStream(byteArray); 

tun und dann

var xmlDoc = XDocument.Load(stream); 
0

Die XML LINQ Bibliotheken machen dies recht einfach

using (XmlTextReader reader = new XmlTextReader("C:/whatever.xml")) 
    { 
    reader.Read(); 
    XElement permission = (XElement)XElement.ReadFrom(reader); 
    string name = permission.Element("CP").Attribute("name").Value; 
    foreach (var tab in permission.Element("CP").Elements("tab")) 
    { 
     string tabName = tab.Attribute("name").Value; 
    } 
    } 
+0

können Sie es in Windows-Form anzeigen? Ich habe auch die XML aus der Datenbank nicht eine separate Datei, also wie kann ich es tun? – salman