2009-02-19 16 views
0

J'ai récemment travaillé avec xml. Et j'ai remarqué un peu un phénomène (peut-être pas un gros problème pour le reste du monde, mais pour moi c'était le cas). Peut-être, c'est moi qui suis un newb. Mais la plupart des nombres codés ou magiques ne devraient-ils pas être décomposés en un fichier de configuration? Par exemple,Que faire des noms de noeud XML (valeurs codées en dur)?

string url = "http://www.domain.com/aDocument.xml";   
    XmlDocument feed = new XmlDocument(); 
    feed.Load(url); 

    XmlNode errorsNode = feed.SelectSingleNode("Errors"); 

    if (errorsNode != null) 
    { 
     XmlNode error = errorsNode.FirstChild; 
     lblError.Text = "Error: " + error.SelectSingleNode("Code").InnerText; 
    } 

Voici le document xml:

<Errors> 
    <Error> 
     <Code>AWS.MissingParameters</Code> 
     <Message>You are missing an parameter</Message> 
    </Error> 
</Errors> 

Comment voulez-vous analyser cela sans coder en dur "code" ou "message"?

Répondre

2

Comme je le ferais pour les nombres. Je voudrais déclarer des constantes de type chaîne qui ont le nom de l'élément à obtenir, puis passer cela aux méthodes sur mes outils XML. Toutefois, vous pouvez envisager de créer une représentation d'objet à partir du document XML (ou du schéma si vous l'avez) qui traiterait tout cela pour vous. De cette façon, vous pouvez simplement charger le document XML dans le code, et il fera l'analyse pour vous dans une représentation d'objet. Puis, si le XML change, vous devrez modifier le code généré pour utiliser vos nouveaux noms d'éléments.

Vous souhaitez utiliser l'outil XSD.EXE pour cela.

2

Je ne sais pas si c'est l'option meilleure, mais j'ai généralement vu ce genre de chose manipulé en utilisant un ensemble de constantes de chaîne. Au moins, si vous traitez le même schéma XML à plusieurs endroits, vos chaînes magiques sont toutes définies au même endroit. Je pense que reléguer ceci à un fichier de configuration serait exagéré à moins que le schéma change fréquemment.