Pregunta

He estado trabajando con XML últimamente. Y he notado un poco de un fenómeno (quizás no tan grande de un acuerdo con el resto del mundo, pero para mí lo fue). Tal vez, es que yo sea un Novato. Pero no debe codificado más duro o números mágicos ser estallado en un archivo de configuración? Por ejemplo,

    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;
    }

Aquí está el documento XML:

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

¿Cómo analizar esto sin codificar "código" o "mensaje"?

¿Fue útil?

Solución

Lo mismo que lo haría para los números. Me declarar constantes de tipo cadena que tienen el nombre del elemento de conseguir, y luego pasar a los métodos que en mis herramientas XML.

Sin embargo, es posible que desee considerar la creación de una representación de objetos del documento XML (o esquema si lo tiene), que se ocuparía de todo esto para usted. De esta manera, se puede simplemente carga el documento XML en el código, y lo hará el análisis para usted en una representación de objeto.

Entonces, si los cambios XML, deberá modificar el código generado a utilizar sus nuevos nombres de los elementos.

Usted desea utilizar la herramienta xsd.exe para esto.

Otros consejos

No sé si es la mejor opción, pero por lo general he visto este tipo de cosas se maneja mediante el uso de un conjunto de constantes de cadena. Al menos, si está procesando el mismo esquema XML en múltiples lugares, sus cuerdas mágicas son definidos en un solo lugar. Pensaría relegando a un fichero de configuración pueden ser excesivos a menos que el esquema cambia con frecuencia.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top