Question

Je travaille avec xml ces derniers temps. Et ont remarqué un peu d'un phénomène (peut-être pas un gros problème pour le reste du monde, mais pour moi, il était). Peut-être, il me est d'être un newb. Mais ne devrait pas le plus dur codé ou les nombres magiques sont brisés dans un fichier de configuration? Par exemple,

    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"?

Était-ce utile?

La solution

Comme je le ferais pour les numéros. Je déclare les constantes de type chaîne de caractères qui ont le nom de l'élément pour obtenir et passer ensuite que les méthodes sur mes outils XML.

Cependant, vous voudrez peut-être envisager la création d'une représentation de l'objet à partir du document XML (ou schéma si vous en 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 syntaxique pour vous en une représentation de l'objet.

Ensuite, si les changements XML, vous devez modifier le code généré pour utiliser vos nouveaux noms d'éléments.

Vous voulez utiliser l'outil XSD.exe pour cela.

Autres conseils

Je ne sais pas si c'est le meilleur , mais je l'ai généralement vu ce genre de chose traitée en utilisant un ensemble de constantes de chaîne. Au moins, si vous traitez le même schéma XML dans plusieurs endroits, vos cordes magiques sont tous définis dans un seul endroit. Je pense reléguer à un fichier de configuration serait overkill à moins que le schéma change fréquemment.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top