2010-05-03 8 views
3

Salut Je développe une application dans Silverlight 3.0, je veux faire un analyseur générique de XML dedans, comme à chaque appel au webservice je reçois un XML différent, je veux le rendre générique de sorte que je reçois un XML dans la structure de données native de C#? Sil te plait aide moi? comme je reçois XML comme cette foisParser XML générique dans Silverlight 3.0

<test> 
<node1></node1> 
<node2></node2> 
</test> 

et d'autres temps

<mytest> 
<application name="XYZ">My Application</application> 
<application name="ABC">My Application</application> 
</mytest> 

Je veux l'analyseur générique, par exemple il rend une structure arborescente de XML complet

+0

Solution simple: pourquoi ne pouvez-vous pas simplement recevoir une chaîne côté client et la lire dans un XmlTextReader ou un XmlDocument? – slugster

+0

comment je peux le faire en utilisant XMLReader? J'ai trouvé quelques exemples mais tous sont pour un type spécifique de XML –

Répondre

1

Vous pouvez utiliser .NET xml serialization.

Compte tenu du xml qui ressemble à ceci

<TestObject> 
    <FirstProperty>SomeValue</FirstProperty> 
    <SecondProperty>17</SecondProperty> 
</TestObject> 

C# objet

[Serializable] 
public class TestObject 
{ 
    public string FirstProperty { get; set; } 
    public int SecondProperty { get; set; } 
} 

Voici le code pour convertir le xml à l'objet

string xml = @"<TestObject> 
        <FirstProperty>SomeValue</FirstProperty> 
        <SecondProperty>17</SecondProperty> 
       </TestObject>"; 

XmlSerializer serializer = new XmlSerializer(typeof(TestObject)); 

using (StringReader reader = new StringReader(xml)) 
{ 
    using (XmlTextReader xmlReader = new XmlTextReader(reader)) 
    { 
     TestObject obj = serializer.Deserialize(xmlReader) as TestObject; 
    } 
} 
+0

Juste pour éviter les malentendus: Vous n'avez pas besoin de l'attribut Serialize pour utiliser XmlSerializer. N'a aucun effet pour ce type de sérialisation. –

+0

mais pour ce type d'analyseur, je dois créer un objet Serializeable pour chaque XML, par exemple si j'avais 100 types de XML, alors j'ai besoin de 100 objets ... Ce n'est pas faisable pour moi. Je veux simplement les stocker dans une structure générique, comme List ou Dictionary. –